Saturday, November 15, 2008

Even more java love.

I've updated Plus4 World with the latest version of Minus4j. I've added a couple of handy features that allow even more games to run. The change list is below, and although I've not offically released this you can go and sample its goodness at plus4world.

  • Added a paramater for the initial frameskip value.
  • Removed software screen scale and now use built in JAVA one - should be MUCH faster.
  • Added ESCAPE key (Escape)
  • Added RUN STOP key - ` (backwards apostrophe, beside 1 key)
  • Added the * key (numpad)
  • Added undocumented opcode LAS,Y ($BB) command. Danger Diamonds now runs.
  • Minus4j now picks up sys4172 style RUN commands from the filename. So games like mercenary_sys23552.prg now work without a seprate RUN command.
  • Minus4j now picks up g12AB style RUN commands from the filename. So games like mercenary_g5C00.prg now work without a seprate RUN command.

    I'm also looking to add sound just now. This is a long standing issue that I'd love to fix so I've been looking at a couple of other emulators and how they handle sound. I not have my Java applet buzzing with noise so thats a good start! I should now only have to port over my TED sound stuff (and later SID sounds) in order to get it playing. Although theres obviously a long way to go before that, but at least theres a buzz about the place now.

    Gaia said...

    Aye Mike,

    Excellent work on Minus4j. Scaled mode rocks. Note sure if you are aware or even care ;-) but Yape also has a "fast" emulation mode that is basically a line based TED emulation. Since I override a few "regular" TED class member functions it is mostly still the same code, so you can pretty much use it as a reference if you like.


    Mike said...

    No I didn't! I went and looked at it. You seem to have 3 modes?

    Fast, low compatability
    Good compatability
    very high compatability

    Fast didnt seem to work well (tried commando). whats the method of good? (I guess very high is the cycle based one).

    Gaia said...

    Well, technically speaking only the last two are cycle based. 'Good' is the original engine and where it lags behind 'very high' is basically $FF1E writes and a subtle sub-cycle accuracy requirement for the 1541 drive emulation (unfortunately many demos used those 'Coby' loaders).

    If you recall that DMA/TED/CPU event table from the old plus/4 mailing list that is how the 'good' mode works the only problem is that if you overwrite $FF1E it may skip certain cycles where certain events are turned on/off hence losing complete track of events.

    BTW, even fast mode has true drive emulation so it can be done.

    Mike said...

    Yeah I did start to seperate out my 6502 processing to do Drive emulation, but lost interest in it. I don't really see it being terribly complex, and communication between CPU's would be pretty simple as its register to register effectivly.

    Well, the FAST mode seems to have too many issues really. Lots of games I tried just didn't work. Still, the normal mode of Yape is usually what I need to make sure games run, and what they're supposed to look like.

    Gaia said...

    Fast mode too many issues? Hmm.... I'll have a look. I made that for the sake of one guy who had a Pentium 200 MMX machine and promised to port Crossfire from the C64 and Yape could'nt run at full speed :-) and I had some line based TED code handy from my PocketPC emulator.

    Mike said...

    Well, if you do... check out Commando (+4 version) and Genetic Fault. Both have serious issues