Jump to content
IGNORED

Ms.Hack (edit of Hack'Em)


Nukey Shay

Recommended Posts

  • 9 months later...

This is great. :cool: Finish it, damn it! :P

 

Anywho...

 

I tried it under Stella, and it works.

 

Then I tried it under EMU7800, which is 2600 compatable, and it doesn't work. For what it might be worth, here is a log dump.

A2600NTSC ready

TIA 1A reset

PIA/RIOT M6532 reset

M6502 CPU (PC:$d0f2) reset

Machine A2600NTSC reset complete: 60 HZ 262 scanlines

M6502 CPU:**UNKNOWN OPCODE: $e3 at $d1bd

M6502 CPU:**UNKNOWN OPCODE: $e3 at $d1bd

M6502 CPU: Processor Jammed

Edited by Artlover
Link to comment
Share on other sites

This is great. :cool: Finish it, damn it! :P

 

Anywho...

 

I tried it under Stella, and it works.

 

Then I tried it under EMU7800, which is 2600 compatable, and it doesn't work. For what it might be worth, here is a log dump.

A2600NTSC ready

TIA 1A reset

PIA/RIOT M6532 reset

M6502 CPU (PC:$d0f2) reset

Machine A2600NTSC reset complete: 60 HZ 262 scanlines

M6502 CPU:**UNKNOWN OPCODE: $e3 at $d1bd

M6502 CPU:**UNKNOWN OPCODE: $e3 at $d1bd

M6502 CPU: Processor Jammed

I'm pretty sure that error is because the game uses some illegal opcodes which EMU7800 doesn't emulate. I tried the ROM in 3 other emulators, and it works in all of them. So if it doesn't work on a real system, that means the emulation shouldn't be working either. I'd be interested in why it fails on real hardware, so I can make it fail in Stella too :)

Link to comment
Share on other sites

  • 3 months later...

After hitting my head on the table for ages over that, I turned to the latest version of Hack'Em and started over (so it already has the latest bugfixes in the program). I took out all illegal opcodes and iffy bankswitching commands (and cut down on the amount of banking in general). Could somebody try this on an actual machine to see if it fails?

 

BTW there's some more stuff that I added (like intermission music and non-moving sprite "actors" that still need editing/compacting), but the moving fruit still hasn't been put in yet. The demo screen and sounds are from the old game, so those need updating as well. I also added a big bonus for uncovering the secret level. There are some smaller issues that need to be addressed as well (like random fruits that change if one is already on the screen). Also, because the latest version of Hack'Em had the center box cut down in size, the mazes are more faithful - only the last one differs slightly (those crosses on either side - because the arcade game allows intersections everywhere and not just every other vertical dot).

MsHack_NTSC_test_.zip

Edited by Nukey Shay
Link to comment
Share on other sites

After hitting my head on the table for ages over that, I turned to the latest version of Hack'Em and started over (so it already has the latest bugfixes in the program). I took out all illegal opcodes and iffy bankswitching commands (and cut down on the amount of banking in general). Could somebody try this on an actual machine to see if it fails?

Just tested it out on my 7800, played a few games and it worked fine. At first I thought it was failing, but then realized it was just a simulated rack test - I like it. Are the intermissions just place holders? I heard the music and saw the sprites, but they are not animated. I couldn't tell from your post if that was intentional or not.

 

-Jeff

Link to comment
Share on other sites

Thanks for that...I appreciate you tried it on a 7800 especially (since that console seems to be a bit more sensitive to unorthodox methods). That was the primary thing that I was after so that compatability isn't an issue :)

The simulated machine test hasn't been altered from Hack'Em (nor much else in the boot/title screen sequence)...but those will be altered soon to better ones. I had to cut it down a bit, currently...after moving the audio tables to another bank to make way for intermission routines. It should still correctly identify your machine...which is needed for the B&W switch compatability routines. The intermissions are just placeholders as you suspected (I left the existing triggers in place, but the sprites don't move around yet). I wanted to fix the music before doing anything else, so I can optimize the routines. All 4 tunes are a direct graft from Atari's 7800 version, so there have been a couple of conversion problems trying to squeeze it in here where the ram is pretty much maxed out (lengthy too...I was already able to merge the frequency and distortion values). Speaking of that, I was at odds whether to import all of Atari's sound files from the 7800...but decided against it. The music alone occupies 2 pages.

 

Current fixes correct some missing/incomplete stuff. The fruit is still non-moving, I spent the entire weekend trying to fix the sprite multiplex routine after "breaking" it unaware (and having to go back 2 dozen versions to figure out what went wrong!) :x The demo player is still very dim, but at least it's following maze rules.

MsHack_NTSC_test_.zip

Link to comment
Share on other sites

On hold for a little bit...the intermissions need a lot of work. 370 bytes left...but that goes quick when adding lookup tables for movement. However, the game is playable with fruits that move around (that needs a bit of touching up too, but it works). Pausing or resetting the game when music is playing messes up the counters, so that needs to be fixed as well.

 

I ended up with a nybble of unused ram, so I threw in a random seed to try to keep games from becoming too predictable.

MsHack.zip

Link to comment
Share on other sites

OK...I set up some intro pointers for the sprites when an intermission is first called, then used the upper 3 bits of the music data to move them around. Adding in a few exceptions (to handle vertically-moving characters), this fit in the animations. Dang...took nearly 400 bytes, but I got there :)

 

Only 14 bytes remain in this whole thing. I need to scrape up some more to fix a couple of remaining issues. There might be a random screen jump occasionally...need to track that down.

MsHack.zip

Link to comment
Share on other sites

A bunch of corrections here...I think that I've got the jitter cured (looked to be doing too much in VBLANK). The score was being wiped out when the demo kicked in...that's fixed (as well as the sprite misplacement). Added some additional control bits to the intermissions (for fast speed, monsters colliding, etc)...still needs tweaking. Alternate color set given to "2" variations, tho that is subject to change as well. Skipping intermissions can be done by pressing right on the controller.

 

 

Take this, brother...may it serve you well.

MsHack.zip

Link to comment
Share on other sites

Current developments.

Some more adjustments done to intermissions. I still can't figure out what I did wrong in the 2nd lap of the 1st one...animation gets killed for some reason. And the 2nd's fast mode is still misaligned.

 

Taking a break from those for a while, I started changing sounds. The death one was easy to make a formula for (it's just subtracting ~n x 2 + ~n from the lowest pitch for 50 frames...where ~n gets bumped every 16th frame). The background was also easy...just 8 values played at the fastest rate over and over...so I threw it into the other channel when it was empty too. Energizer and eyes I left alone...never did figure out the "quack-quack" sound the arcade uses (and that is absolutely necessary IMO). Monster deaths still needs work, as I ran out of space (again!)...but you can make out the effect that I'm trying for. I did clean up the dot-eating and bonus sounds before I ran out, tho.

MsHack.zip

Edited by Nukey Shay
Link to comment
Share on other sites

More optimizations...

I -finally- solved the reason that monsters would go through walls in the original hack (I had set up a special routine to look for this and attempt to fix it before, but never found out what caused it). To save on rechecking things over and over...such as if monsters are at actual map intersections...the results of those tests were put in temp ram that's used by the printing routines. However, the upper 2 of these were being overwritten on occasion...leading the game to detect "hey...it's OK for this monster to do a reversal", when it wasn't OK. That was a tough bug for me to find (took 5 years).

Rather than rely on those tests, I just performed the checks directly. I came out ahead in free space due to the "illegal motion checking subroutine" no longer being necessary.

Because the above was eliminated, this provided 2 additional temps that I could use outside of the display (the ones that weren't being accidentally overwritten were stable). So I used those to handle a bunch of "is the score zero?" and "are we drawing a moving fruit or a center icon?" checks that were needed a number of times.

 

Fixed the sprite motion in intermissions. They still don't quite line up with the musical cues, but it's a bit closer than it was. And sprites stay offscreen when they are supposed to. Also, the animation bug is almost fixed (this happens due to only 4 values used for flicker control. If all 4 happen to be on the same scanlines, selective flicker makes it appear as if they aren't being animated at all (when they really are...it's just that a different sprite is scheduled to be drawn at the exact times that their alternate bitmap should be displayed. To fix Pac-Man, I just merged it with the 3-step counter. Dunno what to do about the monsters yet - since the intermission kernel is the same as all the others, it just skips drawing any playfield (existing flicker is used for sprites)...maybe slow down the animation?

 

The glitch throwing the GO and Inky sprites on top of the player (should a game be reset mid-stream) has been corrected.

 

I altered the eating monster sound a bit as a test, but I'm still not satisfied with it. Does anybody know the frequencies that the arcade game uses for this sound effect? Following the above changes, I ended up with a lot of free space (that I could use to set up a frequency table for this sound effect instead of trying to use calculations). Both sound channels can be used to extend the range, if necessary (as demonstrated by the trailing 3rd of the effect).

 

I altered the bluetimes to reflect what is given in the arcade machine. In addition, bluetime can be piled up on existing bluetime when eating more than one energizer. I can use this extended range for the glitchy background sound the arcade game produces if I ever come up with a better one :)

 

 

 

SMS - Are you running the PAL60 version? Blue monsters using the PAL palette would be green if the display is NTSC. I can't think of a different reason than that.

MsHack.zip

Edited by Nukey Shay
Link to comment
Share on other sites

SMS - Are you running the PAL60 version? Blue monsters using the PAL palette would be green if the display is NTSC. I can't think of a different reason than that.

 

I just ran the latest one you posted (I assume NTSC) and the blue ghosts are still green. Odd. Looking great though! The intermissions are nigh on there!

Wp

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...