Jump to content
IGNORED

Mouse Attack


mantadoc

Recommended Posts

I looked at this and it seems like it is a copy cart that starts with a GROM simulator -- it copies code to RAM then executes it which "restarts" the console and adds MOUSKATTACK to the menu (and still sees the ROM cart MOUSE ATTACK). Selecting it crashes, though... at that point I don't know what has gone wrong. Most likely the copy went awry, but we'd need the original program to compare against to see where.

Link to comment
Share on other sites

My guess is that it's uploading a modified version of the Mousk Attack ROM to the Super Cart RAM. Modified in a way that allows it to work with a GROM emulator in 32K RAM. It then performs some soft reset trickery (using the GROM emulator?) to make the game appear in the menu.

 

So in order to make a ROM only cart out of this we would need to place the modified ROM in one of the banks of the cart. We would also need a loader in the startup bank that restores the RAM contents, switches to the bank with the modified ROM, and executes the program.

  • Like 1
Link to comment
Share on other sites

Collision detection is working in MAME/MESS, but not in Classic99 or JS99'er (checked with with ROM/GROM cart files). I assume it works on 9918A, but does it work on the F18A?

 

BTW, the game is called Mouskattack - not Mouse Attack - right?

 

Edit: It looks like the game tries to read the VDP status byte directly, but the console ISR is also reading it (which will clear it). Only MESS has the accurate enough timing for this to work. In JS99'er the ISR is always clearing the status byte before the game gets a chance to read it.

so_mousk_attack.rpk

Link to comment
Share on other sites

(Using Mouse Attack3.bin from post 10)

 

It seems to be a timing issue... I didn't get a chance to look too deeply, but collisions appear to be checked here:

 

   A8CC  D020  movb @>8802,R0              (34)
         8802
>  A8D0  0240  andi R0,>2000              
         2000
   A8D4  1350  jeq  >a976    

The main console interrupt also runs and so clears collisions. Because Classic99's sprite processing is desynchronized to the frame instead of during the frame, sprite collisions are not necessary reported at the exact correct moment in time. Games that poll frequently will probably get away with it, but this is one case that seems not to.

 

To try and prove it, I patched the code to read the status byte from the scratchpad mirror at >837B instead of directly from the VDP (so I simply changed the bytes at >A8CE from >8802 to >837B), and that got collisions working under Classic99. I'm not proposing that as a long term fix, this is definitely Classic99's fault.

 

I can't say why JS99er also fails -- you set the bits per scanline, don't you?

Edited by Tursi
  • Like 1
Link to comment
Share on other sites

I can't say why JS99er also fails -- you set the bits per scanline, don't you?

I came the the same conclusion as you (see Edit in post above). JS99'er has a scanline renderer for the F18A emulation and a less accurate renderer for the 9918A emulation. But in both cases the screen is drawn all together before the CPU gets a chance to kick in. Immediately after the ISR will execute and clear the status byte. The exception from this is code performed by the F18A HSYNC trigger, which will be executed while the screen in drawn. This makes F18A raster effects possible to emulate.

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...