|
Post by dshadoff on Apr 22, 2022 12:30:42 GMT
Well, it’llalways need some sort of computer to download files from… but I suppose you’re saying that it’ll be more supportable/maintainable if the code is open source or at least the protocol is shared.
|
|
|
Post by SignOfZeta on Apr 22, 2022 12:56:34 GMT
I’m saying that if it’s Windows 11 native and you want to use it in 8 years you’ll need to maintain a Win 11 VM or something to use the flash card. OS updates will eventually break it. The software he hasn’t written yet will be killed off by Windows 17 or whatever.
|
|
|
Post by dshadoff on Apr 22, 2022 13:59:12 GMT
I agree with this, but if the protocol is understood, it shouldn't be too hard to reimplement or transplant - it communicates over a virtual COM port, which is standard for a huge number of devices.
|
|
|
Post by pierregtt on Apr 25, 2022 15:18:54 GMT
Predicting the future is not easy. Maybe in ten years also the hardware will fulfill some changes and USB ports not available anymore, which would require keeping an "old" PC for hardware compatibility too. For now, the application works on all windows edition from XP up to 10 (not tested on win 11).
The protocol is quite simple making porting to other OS/systems easy. There are 4 commands:
1:Block Select: select a given 64K block by setting A21-A16 Flash address bus Byte 0: 'D' Byte 1: Block number from 00 to $3F Returned value: $90 after command has been executed
2.Erase block: Erase previously selected block Byte 0: 'G' Byte 1: 0x00 Byte 2: 0x00 Returned value: $90 => erasing started, then poll for end of operation through sending read command until read byte's bit 7 is '1'
3. Write flash Write 32 bytes starting from address sent as parameter to previously selected block Byte 0: 'C' Byte 1: A15-A8 Flash address Byte 2: A7-A0 Flash address Byte 3 to 34: 32 bytes data to write Returned value: $90 => Finished writing 32 bytes
4. Read Flash Read 32 bytes starting from address sent as parameter from previously selected block Byte 0: 'B' Byte 1: A15-A8 Flash address Byte 2: A7-A0 Flash address Returned value $90 followed by 32 read bytes.
Unknown command: returned value $7F
No response within 500ms after a command has been sent => communication issue
|
|
|
Post by dshadoff on Apr 25, 2022 17:26:02 GMT
Wow, 32 byte blocks ? I would have assumed something larger, perhaps 512 bytes at a time.
|
|
pokun
Gun-headed
Posts: 85
Homebrew skills: HuC6280 assembly
|
Post by pokun on Apr 30, 2022 21:51:15 GMT
Yeah well USB will probably be regarded obsolete when Windows 38 comes out because system designers hates us dinosaurs. Yes it is possible to simply ignore the selection menu residing at block 0 by programming a game starting from that block. The game will then start as from regular Hucard. However, reverting to multiple game mode requires reflashing block 0 with selection menu application. Selection menu is thus to be provided as accompanying file for the rom flashing application. Yeah that's exactly how I expect it to work. In that case it will have an edge over the Everdrive that is useful for development. Oh and will it have a hardware RESET button like the Everdrive?
|
|
|
Post by pierregtt on May 2, 2022 10:08:56 GMT
Larger blocks would enhance payload/total sent bytes ratio and reduce the number of request-response pairs. Anyway, the bottleneck is the Flash per byte writing delay.
Adding a reset button is possible. First release doesn't have any as most games can be restarted with SELECT+RUN buttons and there is the Power button for returning to game selection menu. Could be beneficial for preserving the Power button. Then the question is: shall it return to game selection menu (if programmed as block 0) or simply reset selected game.
|
|
pokun
Gun-headed
Posts: 85
Homebrew skills: HuC6280 assembly
|
Post by pokun on May 2, 2022 22:45:38 GMT
Since no game expects you to have a hard reset button (like in very rare cases on certain other consoles where you need to press RESET to continue the game), I suppose it's OK to reset to block 0 for easy access to the menu. If someone really needs to be able to hard reset a game you can always only burn a single game to block 0. On Everdrives you can choose if you hard reset to the loaded game or the menu, but I guess that may make it more complex.
|
|
|
Post by pierregtt on May 5, 2022 8:15:47 GMT
May be quite easy to implement in hardware. Connecting a Reset button to both the Reset Pin of the IC that stores the starting block number of selected game and the /RES pin of Hucard connector will restart the menu or the game programmed at block 0 (if no menu). Adding a second button connected only to /RES pin will restart selected game without returning to menu. Adding two buttons is only a matter of extra-components cost.
|
|
pokun
Gun-headed
Posts: 85
Homebrew skills: HuC6280 assembly
|
Post by pokun on May 5, 2022 19:51:33 GMT
I see, that might work well.
|
|