Jump to content
doctorclu

Flashback Portable: Needed Controller Hacks

Recommended Posts

I don't know anything about CBS ram, and I absolutely HATE jigsaw puzzles. That file is a mess to try to read.

  • Like 1

Share this post


Link to post
Share on other sites

So is the CBS ram like looking in a shreader and trying to reassemble a document?

Share this post


Link to post
Share on other sites

I'm not a machine. I can read through assembly just fine, tho (as long as the diversions are minimal). That's actually why I prefer to make my own disassembles when creating hacks...less muck to trudge through. There's so much semicolon-riddled code here I don't know where to start.

Share this post


Link to post
Share on other sites

Makes sense. Sounds like me with most disassemblies. :D

 

Well earlier you said that the Beat'em & Eat'em controller hack for Kaboom would not be practical since the game gets so fast and frantic at later levels. Honestly still wouldn't mind seeing that, Warlords, or Breakout with the Beat'em controls though.

 

Got to be better than what is currently there.

Share this post


Link to post
Share on other sites

I'm not a machine. I can read through assembly just fine, tho (as long as the diversions are minimal). That's actually why I prefer to make my own disassembles when creating hacks...less muck to trudge through. There's so much semicolon-riddled code here I don't know where to start.

 

Semicolons are for the comments - I use a lot of comments and descriptive naming, machine generated assemblies lack both of those attributes which imo makes them tougher to follow.

 

Where to start if you're inclined - Gameloop2 is pretty small.

 

I've got an RTS in there, but if I remove the small block of unused ballast code after the RTS it won't run on the portable; no specific CBS RAM access code or bank switching code in there either just ordinary 6502 code.

Share this post


Link to post
Share on other sites

Working, yes...perfectly, no. As mentioned, the early HMOVE is suspected for the skewed text. The score/lives area does show up at the top of the level when you reach it. The split screen is lost when you are on lower girders.

 

Semicolons are for the comments - I use a lot of comments and descriptive naming, machine generated assemblies lack both of those attributes which imo makes them tougher to follow.

Concise comments are no problem. Too many comments and it becomes unreadable gibberish to me (worse than uncommented code). I'd have to erase 99% of the text just to figure out what your program is supposed to be doing...a great deal of the comment lines are inactive program code lines.

 

For example...which RTS after Gameloop2 are you referring to? The one ON the label? The RTS a few lines lower? Or the RTS a few lines lower from that?

 

I'll look into it after I do some heavy editing :P

  • Like 2

Share this post


Link to post
Share on other sites

BTW the *unedited in any way* program you posted does NOT work on the portable. In Stella, some colored lines appear in the upper left. On the portable, no screen (but a lotta horrible screeching noises). What it this thing SUPPOSED to be doing?

Share this post


Link to post
Share on other sites

Working, yes...perfectly, no. As mentioned, the early HMOVE is suspected for the skewed text. The score/lives area does show up at the top of the level when you reach it. The split screen is lost when you are on lower girders.

 

Concise comments are no problem. Too many comments and it becomes unreadable gibberish to me (worse than uncommented code). I'd have to erase 99% of the text just to figure out what your program is supposed to be doing...a great deal of the comment lines are inactive program code lines.

 

For example...which RTS after Gameloop2 are you referring to? The one ON the label? The RTS a few lines lower? Or the RTS a few lines lower from that?

 

I'll look into it after I do some heavy editing :P

Thanks Nukey! :)

BTW the *unedited in any way* program you posted does NOT work on the portable. In Stella, some colored lines appear in the upper left. On the portable, no screen (but a lotta horrible screeching noises). What it this thing SUPPOSED to be doing?

 

I edited the file so much I must have uploaded a non-working version, this one definitely works, just compiled and tested it on the portable. Not doing much, just displaying 5 colored blocks and playing a tune. cbstest2a.asm

 

The RTS I am referring to is the first one after the gameloop2 label - it prevents the ballast block of code that follows from being executed so that code shouldn't be needed, but removing it causes the horrible screeching noise you observed - it would be really interesting if this build also fails on your portable because we'd have two variations of the portable emu, which is a possiblity.

Share this post


Link to post
Share on other sites

There ARE two versions of the AFP, preproduction and the current model. The former includes Space Invaders, and seems to have a bit better emulation (it can deal with VBLANK on problem games, for example). What is the "ballast code"? Everything between Gameloop2 and doneGameLoop2

(apart from the RTS)?

  • Like 1

Share this post


Link to post
Share on other sites

Just tried it...with all of those lines removed, it doesn't work (as you said). But if you set ORG to $D7A2 above doneGameloop2 (which is where it would be if all that mess was present), it works. So the problem is something that follows this area. Something which cannot be shifted down a page and a half in memory. You wanna try throwing in 411 bytes of filler above every tag (one at a time) to zero in on the problem? I'm going blind looking at it.

  • Like 1

Share this post


Link to post
Share on other sites

Warlords is already playable via "special handling". Left & right to move the yellow shield, up and down for the green shield. The trigger is available to yellow. Any hacking at all to the original alters the checksum and makes it unplayable to the portable...so then the control scheme would need fixing.

  • Like 1

Share this post


Link to post
Share on other sites

There ARE two versions of the AFP, preproduction and the current model. The former includes Space Invaders, and seems to have a bit better emulation (it can deal with VBLANK on problem games, for example). What is the "ballast code"? Everything between Gameloop2 and doneGameLoop2 (apart from the RTS)?

 

Just tried it...with all of those lines removed, it doesn't work (as you said). But if you set ORG to $D7A2 above doneGameloop2 (which is where it would be if all that mess was present), it works. So the problem is something that follows this area. Something which cannot be shifted down a page and a half in memory. You wanna try throwing in 411 bytes of filler above every tag (one at a time) to zero in on the problem? I'm going blind looking at it.

 

Thanks for your help Nukey! :) I've done some more experimenting and have been able to get full games (larger code to work), while less code such as simple examples will cause the issue to surface:

 

for a 12K CBS ROM image to work, the first bank had better be nearly full or offset so that it is pushed further down; your ORG solution does this so I may have the compiler calculate an ORG and throw it in if it detects the program is too small.

 

Btw, here's what the short program looked like behind all that commented mess of Assembly:

 

10 vwpixel(0,2,flip)

20 for x=1 to 4:vwpixel(3,x,on):next x

30 vwpixel(1,4,poll)

 

I've also found some other idiosyncrasies between the portable and Stella compiling this game to run on the portable under CBS RAM - this time the portable gets it right and Stella displays a mosaic when I rely on pre-initialized memory.

 

In contrast, Stella get's the pre-initialization right with Pixels and the portable doesn't but it's not a fatal error; the first game in Stella or via the Harmony will start out with only the slow breakout block and pacman chasing you and it takes awhile for the fast block to come into play. On the portable however, the fast block starts in right away along with the slow block but it doesn't break playability (just harder).

 

I had already been trying to find precisely where that preinitialized memory is being referenced for awhile because subsequent games on both Stella and Harmony always start with both blocks too (only the very first game works as intended) however the Assembly listing for Pixels is over two inchs thick when printed - I feel the same as you trying to navigate that listing like trying to find a needle; I can post it if you want to take a look!! :)

 

When I get a little further with the StarBlitz portable beta I'll post that on the regular Atari forum for players to test and help find any more anomalies for fine tuning the vwBASIC compiler, also will ask players to test on both versions of the portable you mentioned though I am glad I have the release version - I do want to support the pre-production unit too but it seems less important if millions of portables are eventually sold but only a thousand are pre-production units.

Share this post


Link to post
Share on other sites

Adventures Of Tron: this was listed perfect even though the title screen was glitched. I also corrected all HMOVEs (originally hitting at cycles 2, 75, and 74 when WSYNC is absent), and fixed the number of scanlines to a steady 262...so it will run on anything. Colors edited slightly for better contrast. Use difficulties to start at 4 skill levels...both B = 0, Left A = 2, Right A = 4, Both A = 8.

Adventuresoftron.bin

Edited by Nukey Shay
  • Like 3

Share this post


Link to post
Share on other sites

Adventures Of Tron: this was listed perfect even though the title screen was glitched. I also corrected all HMOVEs (originally hitting at cycles 2, 75, and 74 when WSYNC is absent), and fixed the number of scanlines to a steady 262...so it will run on anything. Colors edited slightly for better contrast. Use difficulties to start at 4 skill levels...both B = 0, Left A = 2, Right A = 4, Both A = 8.

Nukey's back! I was thinking you were taking a break from hacking ROMs for the AFP, since the last one you did 11 days ago.

I updated the Compatibility List to reflect "modified to work" for this title.

Keep up the great work!

Happy Mardi Gras!!!

Share this post


Link to post
Share on other sites

The portable uses the regular version without copyright, I've been told. So whatever trick it is using to merge the two frames (removing the flicker) would be applicable to the regular version only.

 

It's apparent my old 'Arcade Asteroids' hack ( http://atariage.com/forums/topic/77019-asteroids-arcade-hack/) isn't covered under this condition. (it was hacked from T.J.'s 'Sadistroids' and has the copyright/title screen)

 

I'd love to hack up a version with alternate thrust/hyperspace controls (fat thumbs). I'd give up the title page for a de-flickered version too. My talents are basic bit-hacking though, sadly.

Share this post


Link to post
Share on other sites

The flicker-free condition will only work with the original unhacked game (no copyright screen). Any hacking done at all and the game flickers like on a regular console.

 

Surround:

Not much I can do about the 2player variations, so I made them single-player. The blue marker will follow your direction in reverse, and the goal is to fill the screens to time out the game at 18 minutes before either marker hits 10 points.

 

All variations are also given to the computer player, tho it does not quite know what to do with them :P

 

I also included the option to turn off vertical separation lines, for a total of 66 game variations. The game #'s that match the original cartridge are shown off to the right when you use select.

 

 

Game number...
...Lines| Speed | Diag | Wrap | Erase | Comp
01      |       |      |      |       |    
02      |   X   |      |      |       |    
03      |       |   X  |      |       |    
04      |   X   |   X  |      |       |    
05      |       |      |   X  |       |    
06      |   X   |      |   X  |       |    
07      |       |   X  |   X  |       |    
08      |   X   |   X  |   X  |       |    
09      |       |      |      |   X   |    
10      |   X   |      |      |   X   |    
11      |       |   X  |      |   X   |    
12      |   X   |   X  |      |   X   |    
13      |       |      |   X  |   X   |    
14      |   X   |      |   X  |   X   |    
15      |       |   X  |   X  |   X   |    
16      |   X   |   X  |   X  |   X   |    
17      |       |      |      |       |  X 
18      |   X   |      |      |       |  X 
19      |       |   X  |      |       |  X 
20      |   X   |   X  |      |       |  X 
21      |       |      |   X  |       |  X 
22      |   X   |      |   X  |       |  X 
23      |       |   X  |   X  |       |  X 
24      |   X   |   X  |   X  |       |  X 
25      |       |      |      |   X   |  X 
26      |   X   |      |      |   X   |  X 
27      |       |   X  |      |   X   |  X 
28      |   X   |   X  |      |   X   |  X 
29      |       |      |   X  |   X   |  X 
30      |   X   |      |   X  |   X   |  X 
31      |       |   X  |   X  |   X   |  X 
32      |   X   |   X  |   X  |   X   |  X 
33   X  |       |      |      |       |    
34   X  |   X   |      |      |       |    
35   X  |       |   X  |      |       |    
36   X  |   X   |   X  |      |       |    
37   X  |       |      |   X  |       |    
38   X  |   X   |      |   X  |       |    
39   X  |       |   X  |   X  |       |    
40   X  |   X   |   X  |   X  |       |    
41   X  |       |      |      |   X   |    
42   X  |   X   |      |      |   X   |    
43   X  |       |   X  |      |   X   |    
44   X  |   X   |   X  |      |   X   |    
45   X  |       |      |   X  |   X   |    
46   X  |   X   |      |   X  |   X   |    
47   X  |       |   X  |   X  |   X   |    
48   X  |   X   |   X  |   X  |   X   |    
49   X  |       |      |      |       |  X 
50   X  |   X   |      |      |       |  X 
51   X  |       |   X  |      |       |  X 
52   X  |   X   |   X  |      |       |  X 
53   X  |       |      |   X  |       |  X 
54   X  |   X   |      |   X  |       |  X 
55   X  |       |   X  |   X  |       |  X 
56   X  |   X   |   X  |   X  |       |  X 
57   X  |       |      |      |   X   |  X 
58   X  |   X   |      |      |   X   |  X 
59   X  |       |   X  |      |   X   |  X 
60   X  |   X   |   X  |      |   X   |  X 
61   X  |       |      |   X  |   X   |  X 
62   X  |   X   |      |   X  |   X   |  X 
63   X  |       |   X  |   X  |   X   |  X 
64   X  |   X   |   X  |   X  |   X   |  X 
65 - Graffiti w/lines
66 - Graffiti w/o lines

Surround(portable).bin

  • Like 3

Share this post


Link to post
Share on other sites

That's a lot of game selects.

Share this post


Link to post
Share on other sites

Me to the genius hacking skills of Nukey Shay

Agree! But, it has been awhile since we've seen another hack from the greatest hacker around!

Share this post


Link to post
Share on other sites

Very nice! I've added Elevator Action (and a few other ones.. ooops!) before that to the links on the first page of this thread.

Share this post


Link to post
Share on other sites

BTW flickerless asteroids happen even if the game is loaded as a .bin from the SD. The included paddle games also share this trait. Let's call this "Special handling".

 

Rules so far:

Special handling to specific roms - yep

Non-persistent color switch (7800-similar)

Frequent port read (SWCHA/SWCHB) - avoid

VBLANK - remove for production version

Mirrored RIOT addresses - not supported

On cart ram - use $FF to fill

Illegal opcode use - not supported

Early HMOVE - not supported

+1 cycle by branch over page - Nope

 

Any others?

 

Any ideas about this one Nukey?

 

KC_AFP_BETA.bin

 

The portable seems to act like it has a Sega pad.

 

One of the ghosts malfunctions if a Sega pad is plugged into the full size console, but it works fine with a Joystick, same thing happens with the SuperCharger version.

 

And the same ghost malfunctions on the AFP - perhaps there is no paddle RAM byte?

 

EDIT: Found it! :) Memory location 24 changes state on a full size console if a sega pad is plugged in, or after a few hours with temperature changes - paddle cap must affect it. I had intended to use #24 as an offset ;)

Edited by Mr SQL

Share this post


Link to post
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.

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