I've made several improvements to the core. I've added instruction cycle counts, so most games should run close to correct timing. Currently using 3.047MHz (42.66MHz/14) clock instead of 3MHz, but it's close. This did fix the audio glitches as expected. You can also turn on Turbo mode, if you aren't playing games that care about timing and want it to run fast.
Anybody looking for some games to try out, here are some of my favorites:
-Parsec: Side scrolling shoot-em-up. Need the speech synthesizer for the full experience, but still fun. Number keys 1-3 control vertical speed (needed for fueling tunnels).
-Munchman: Pac-man clone. Faster and better than Pac-Man IMHO.
-Shamus: Berzerk clone set in a maze with an end goal. Released on several consoles.
-Hunt the Wumpus: Minesweeper type puzzle game. All caverns within two spaces of the Wumpus have blood (red) spots. All caverns within one space of the two swamp pits have a green outline.
-Hopper: Simple little action game. Make your kangaroo punch the boxes to trap the trappers.
-Blasto: Tank/minefield for up to 2 players.
-Tombstone City: Tank style game. Groups of 2 cacti produce enemies. Shoot the enemies to create more cacti. Groups of 3 cacti disappear. Clear all groups of 2 to clear stages (days).
There are also versions of many of the arcade port games released for many systems at the time (Donkey Kong, Pac-Man, Frogger, etc).
brunosilva wrote:@GreyRogue - i'm trying some bin roms that i have... but its not working...
where can i research more about this?
Any specifics on the ROMs? Are you using the latest version? What types are the ROMs? Size?
The core currently only supports 64KB of cart ROM, which I thought was big enough to run anything released in the 1980s. I'm currently using less than 300KB of altsyncram, so I could double everything easily without issue (assuming things like HDMI and other built in things aren't using too much of it). If 256KB (or maybe 512KB) is needed, I'd have to rearrange some things.
The other option is to switch to using the SDRAM board, but I haven't looked into how that works. If there were an existing vhd or verilog file that converted it into something like PSRAM that would be helpful. I guess I could just copy the NES code, but I'm uncertain of the timing requirements and haven't had time to look at it. I think it should be possible to have an option to switch between altsyncram and the SDRAM board, but I haven't looked closely at that either.
By the way, the usage should be:
Load the base TI system bios roms using the first option from the OSD. This file can be created from the create-misterrom.cmd file (should be 192KB ).
These two can be done in any order:
-Load any *G.bin with that option
-Load any cart ROMs (*C.bin) with the first option (currently must be less than 64KB).
Finally load a *D.bin file if using one.
If the C.bin file is bigger than 8KB, you might need to repeat it to fill out the full 64KB for banking/masking purposes. (You'd need to do this before transferring the file to the core). You could modify the create-misterrom.cmd to do this for you. Basically it's just filling in the altsyncram, which is formatted like this:
0x00000-0x0FFFF (64KB) = Cart ROM (C and D ROMs would occupy the first 16KB). Loading the first option just starts filling from the beginning regardless of size, which is why loading the 192KB system image works (it just fills in everything). If you load the *D.bin option last, the first 16KB will be mirrored for the full 64KB.
0x10000-0x1FFFF (64KB) = GROMs (System GROMs occupy the first 24KB). Loading from the G option fills in starting after the first 24KB (room for 40KB Cart GROMs). Now that cycle timing is implemented, you could use the original versions of the System GROMs instead of the Speccery modified ones. He just changed them to eliminate keyboard typing repeat (which didn't work well at Turbo speeds).
0x20000-0x2FFFF (64KB) = DSRs (Floppy Disk Controllers, etc.) Scratchpad RAM, and System BIOS ROM are here.
0x30000-0x3FFFF (64KB) = System Expansion RAM. 32KB expansion RAMs were available at the time. If you make images larger than 192KB, they will fill this in as well.