Jump to content
doctorclu

Flashback Portable: Needed Controller Hacks

Recommended Posts

Games Hacked to work on the Atari Flashback Portable.

 

Star Raiders 2600 - (By Nukey Shay)

Tapper - (By Nukey Shay)

BudTapper - (By Nukey Shay)

Acid Drop - (By Thomas Jentzsch)

Custer (portable) - (By Nukey Shay)
Enduro (portable) - (By Nukey Shay)
Jawbreaker (portable) - (By Nukey Shay)
Lochjaw (portable) - (By Nukey Shay)
Marauder (portable) - (By Nukey Shay)
Sharkattack (portable) - (By Nukey Shay)
Squeezebox (portable) - (By Nukey Shay)
Wordsattack (portable) - (By Nukey Shay)

Man-4K pac 1_3 - (By Debro)

Defender 2 - (By Nukey Shay)

Fix It Felix - (By Cybearg)

Raiders of the Lost Ark - (By Nukey Shay)

Circus (Circus Atari w/ a Joystick) - (By Zellers (Company)

Bloody Human Freeway - (By Nukey Shay)

Freeway - (By Nukey Shay) (first two player game on the AFP!)

Nackgammon (portable) - (By Nukey Shay)

Defender arcade (portable) - (By Nukey Shay)

Asteroids (alternate control) - (By Nukey Shay)

Spyhunter (portable) - (By Nukey Shay)

Star Trek (portable) - (By Nukey Shay)

Beamrider (portable) - (By Nukey Shay)

Beat'em and eat'em (portable) - (By Nukey Shay)

Spy Hunter (Black) - (By Nukey Shay with color mod by KevinMos3)

Spy Hunter (Gray) - (By Nukey Shay with color mod by KevinMos3)

Berzerk - (opening screen modified for Flashback by KevinMos3 w/Nukey Shay fix)

Berzerk (fixed for Portable) - (By Nukey Shay)

Berzerk 2player (portable) - (By Nukey Shay)

Bumperbash (portable) - (By Nukey Shay)

Towering Inferno (portable) - (By Nukey Shay)

Wizard of Wor (controller order change) - (By Nukey Shay)

Gauntlet (other buttons hack) - (By Nukey Shay)

DarkChambers (Other buttons hack) - (By KevinMos3)

Wizard of Wor 16K [includes CBS version by pushing up on dpad at startup] - (By Nukey Shay)

Yahtzee (portable) - (By Nukey Shay)

DK VCS (portable) - (By Nukey Shay)

WestWorld (portable) - (w/ Berzerk fix by Nukey Shay and graphical hack by KevinMos3)

WestWorld Turbo - (w/ Berzerk fix by Nukey Shay and graphical hack by KevinMos3)

Berzerk Turbo (portable) - (w/ Berzerk fix by Nukey Shay and graphical hack by KevinMos3)

Yahtzee with big dice - (By Nukey Shay)

Shieldshifter (portable) - (By Nukey Shay)

Stripoff (portable) - (By Nukey Shay)

Adventures of Tron - (By Nukey Shay)

Surround (portable) - (By Nukey Shay)

Elevator action (portable) - (By Nukey Shay)

Aardvark (portable) - (By Nanochess)

Tacscan(portable)- (By Nukey Shay) (mostly works)

Cxb8 Millipede (no grey)- (By Cats)

PressureCooker(AFPv1)- (By Nukey Shay)

PressureCooker(AFPv2)- (By Nukey Shay)

PressureCooker(AFPv3)- (By Nukey Shay)

RallyX- (By Nukey Shay)

Commandoraid- (By Nukey Shay)

Commandoraid-Paddle- (By Nukey Shay)

Commandoraid-Joystick- (By Nukey Shay)

Arcade Pong- (By Nukey Shay)

 

Games already made useful on the FBP through controller hacks (and my inspiration for this thread)

* Big Bird's Egg Catch - from kid's controller to joystick. - (By OmegaMatrix)

* Holey Moley - from kid's controller to joystick. - (By OmegaMatrix)

* Cookie Monster Munch - from kid's controller to joystick. (By OmegaMatrix)

* Omega Race joystick hack - (By Thomas Jentzsch)

 

 

(THE ORIGINAL PITCH THAT STARTED THIS MESSAGE THREAD)

-------------------------------------------------------------------------------------------------

post-4709-0-15068400-1479582100_thumb.jpg

 

Even though the Flashback Portable (with the SD card support) is not out in stores till early next month, some of us have ordered one online and are seeing which games work on the little handheld.

 

As a list of hundreds of games are being tested and the results listed, some games break due to special hardware tricks, but most of the non-working games are from the D-pad design and emulation problems. But this thread is not about that...yet. :)

 

This thread is making some adjustments to games to help them work better with an Atari system with only one dpad controller and no other controller options.

 

For those up for a challenge or just showing off, here are some games that could use a slight adjustment to make an awesome game on the Flashback Portable (FBP)

 

1) Wizard of Wor: reassigning controller 2 to controller 1. It was wild how they made that game making the first player use the second joystick. At the moment you have to select a two player game to get this to work so that player two gets the FBP's only controller. Re-assigning player one to joystick 1 instead of the second joystick will just make this experience better.

 

post-4709-0-85010800-1479583410_thumb.jpg

 

2) Star Raiders : Brought this one up, was sad that there was not a keyboard controller. Then I played Star Master and was inspired on how they brought up a galactic map with the select switch.

 

On the FBP they give you six buttons. So you have fire of course, then L and R difficulty (two buttons that I know can use used during gameplay), the TV option switch (not sure if anyone has ever used this switch during gameplay) and the select switch (which we know Star Master used.)

 

If someone is up for a challenge, or walking me through a challenge but I'll admit it would be a bit of walking :P what if we used difficulty L (on) for shield on Difficulty L (off) for shield off [since this was a two position switch. R Difficult on for Fore View, R Difficulty off for Galactic Map, and then select of the TV select switch for hyperspace? (The sixth button is the pause button which would probably not help us in this case being more hardware/emulator effect than a in game effect.)

Edited by doctorclu
  • Like 4

Share this post


Link to post
Share on other sites

I don't have my portable yet, so I can't test this awesome Wizard of War hack that is 16k and allows you to select the left joystick for player one:

 

http://atariage.com/forums/topic/209266-wizard-of-wor-2-the-arena/page-10?do=findComment&comment=3181547

 

I believe there is a 4k hack elsewhere; I just haven't search for it yet. (Still can't find it... Just the supercharger conversion by Nukey that starts with 2 player mode.)

Edited by atwwong
  • Like 1

Share this post


Link to post
Share on other sites

That version of Wizard of Wor works pretty good on the FBP and I added that to the list of alternatives for it.

 

 

Share this post


Link to post
Share on other sites

1) Wizard of Wor: ... It was wild how they made that game making the first player use the second joystick.

That makes it arcade accurate

 

Player one has yellow Worriors, on the right, and player two has blue Worriors, on the left.

Share this post


Link to post
Share on other sites

That makes it arcade accurate

 

 

I've played this game in the arcade, and I've played this game on the 2600 and 800 computer.

Having the 1st player on joystick 2 just makes it a pain in the butt. More so if you're on a game system like the FBP that only has joystick 1.

Share this post


Link to post
Share on other sites

Having the 1st player on joystick 2 just makes it a pain in the butt.

Don't disagree, I just don't consider it "wild" that they would strive to make the game more arcade accurate after the backlash to Pac Man that occurred the year before.

  • Like 1

Share this post


Link to post
Share on other sites

If someone is up for a challenge, or walking me through a challenge but I'll admit it would be a bit of walking :P what if we used difficulty L (on) for shield on Difficulty L (off) for shield off [since this was a two position switch. R Difficult on for Fore View, R Difficulty off for Galactic Map, and then select of the TV select switch for hyperspace? (The sixth button is the pause button which would probably not help us in this case being more hardware/emulator effect than a in game effect.)

 

Looks like I have some decompiling, recoding, and re-compiling to do to get Star Raiders working on the Atari Flashback Portable. (AFP)

 

I found the tools for decompiling. I need some examples of the code for using the following buttons to effect gameplay, can someone point me to some good links?

 

* The difficulty switches.

* The color select switch

* The select switch.

Edited by doctorclu

Share this post


Link to post
Share on other sites

I need some examples of the code for using the following buttons to effect gameplay, can someone point me to some good links?

 

* The difficulty switches.

* The color select switch

* The select switch.

TV Type, Select and Reset are shown in my Collect series, which is probably amongst the most thoroughly commented 2600 code you'll ever find. I suggest going through the entire series, starting with Let's Make a Game!, but if you don't wish to then check at least these:

All of those switches are read via the same register, SWCHB.

post-3056-0-61637400-1480001347_thumb.png

 

While the programming documentation shows difficulty switch positions as amateur (B) and pro (A), I refer to them as beginner (B) and advanced (A).

 

I didn't use the difficulty switches in Collect, but you'll find that they're typically checked using the BIT instruction because it moves bit 6 into V (overflow flag) and bit 7 into N/S which makes it very easy to check them. N/S = negative/sign - some documentation uses N for negative, other documentation uses S for sign. They both mean exactly the same thing, it's just something to be aware of - Stella uses N:

post-3056-0-49758100-1480001173.png

 

CheckLeftDifficulty:
    bit SWCHB
    bvs LeftDifficultyA
LeftDifficultyB:
    ; do left difficulty B here
    jmp DoneLeftDifficulty
LeftDifficultyA:
    ; do left difficulty A here
DoneLeftDifficulty:
 
CheckRightDifficulty:
    bit SWCHB
    bmi RightDifficultyA
RightDifficultyB:
    ; do right difficulty B here
    jmp DoneRightDifficulty
RightDifficultyA:
    ; do right difficulty A here
DoneRightDifficulty:


The branch can also be done the other way:

CheckLeftDifficulty:
    bit SWCHB
    bvc LeftDifficultyB
LeftDifficultyA:
    ; do left difficulty A here
    jmp DoneLeftDifficulty
LeftDifficultyB:
    ; do left difficulty B here
DoneLeftDifficulty:
 
CheckRightDifficulty:
    bit SWCHB
    bpl RightDifficultyB
RightDifficultyA:
    ; do right difficulty A here
    jmp DoneRightDifficulty
RightDifficultyB:
    ; do right difficulty B here
DoneRightDifficulty:


When reviewing the Stella Programmer's Guide you may notice the TIA read registers are also wired up to use bits 6 and 7, which was done so they could easily be tested via the BIT instruction.

post-3056-0-55953900-1480002013_thumb.png

Share this post


Link to post
Share on other sites

Oh this is awesome info! Now to plug this in after Thanksgiving.

 

So do we have examples of the keyboard controller code? :D

Share this post


Link to post
Share on other sites

I'm going to have to keep an eye on this thread, good luck guys.

 

BTW, Outlaw does have game modes that are 1-player, although they aren't very exciting =)

Edited by Asaki
  • Like 1

Share this post


Link to post
Share on other sites

Just wanted to say thanks for the advice. Currently I'm trying to figure out Distella to disassemble the roms. Figure it would be fairly cut and dry, and it probably is, but I've got it figure out which subcommands I need to get the rom to disassemeble. Would appreciate any pointers to the following...

 

Here is what I get so far when trying to disassmble the Star Raiders rom:

 

Use: DiStella [options] file
options:
-7 Use Atari 7800 MARIA equates and file sizes
-a Turns 'A' off in accumulator instructions
-c Defines optional config file to use. (e.g. -cpacman.cfg)
(see distella.txt for additional information)
-d Disables automatic code determination
-f Forces correct address length
-i Process DMA interrupt Vector (7800 mode)
If 2600 mode, enables -b option
-b Process BRK interrupt Vector (2600 and 7800 mode)
-k Enable POKEY equates (7800 mode only, auto-detected if a78 file)
-o# ORG variation: # = 1- ORG $XXXX 2- *=$XXXX 3- .OR $XXXX
-p Insert psuedo-mnemonic 'processor 6502'
-r Relocate calls out of address range
-s Cycle count

Example: DiStella -pafs pacman.bin > pacman.s
Example: DiStella -paf7ikscball.cfg ballblaz.bin > ballblaz.asm

Email: [email protected] or [email protected]
Version 3.0 updates, email [email protected]
Version 3.01+ updates, email [email protected]
>distella -pafs Raiders.bin
Error: .bin file must be 2048 or 4096 bytes
for 2600 games; For 7800 games, .bin file must be
16384, 32768 or 49152 bytes (+128 bytes if header appended)
Also, the -7 option must be set or unset appropriately

Share this post


Link to post
Share on other sites

Can you just pad the ROM?

 

Edit: Nevermind, I see Star Raiders is 8192 bytes. I guess the program won't do files that large?

Edited by Asaki

Share this post


Link to post
Share on other sites

You have to split the Star Raiders ROM into the separate 4K banks, then run each bank thru Distella. However, the jumps between banks means distella can't follow the program flow, so it won't be able to easily differentiate between code and data. Nukey Shay goes into detail on how he handles that in this topic:

http://atariage.com/forums/topic/101792-how-do-i-disassemble-8kb-atari-2600-games

 

Stella has a built in version of Distella, use the savedis command at the prompt, but likewise it only supports 4K or smaller ROMs.

post-3056-0-12050800-1481214753_thumb.png

 

Stella's version is really good for the ROMs it supports though. Best practice is to run the game for a while, making sure to see/do everything you can, and only then use savedis. The process of running the game allows Stella to determine which parts of the program are code and which parts are data. Additionally, it will know which parts of the data are used as graphic data for the players or playfield and will output them in a different format than regular data. In this screenshot:

  • top-left = legend
  • bottom-left = the * denotes code that hasn't been executed by Stella
  • top-right = the (D) denotes data that hasn't been used1 for player or playfield
  • middle-right = the (G) denotes data used as graphics for a player (the castle gate)
  • bottom-right = the (P) denotes data used as graphics for the playfield

post-3056-0-90180600-1481214862_thumb.png

 

1 it's still possible this data is for players or playfield, just that it hasn't yet been used for that purpose.

Share this post


Link to post
Share on other sites

Speaking of Nukey Shay I found this from six years ago about Star Raiders disassembly...

 

http://www.gamefaqs.com/boards/585145-star-raiders/52705745

 

"Star Raiders

;First 4k segment---

ORG D000
DATA D000 D12A
CODE D12B D3BF
DATA D3C0 D60C
CODE D60D D639
DATA D63A DFF1
CODE DFF2 DFF7
DATA DFF8 DFFF

;Second 4k segment---

ORG F000
DATA F000 F09D
CODE F09C FD98
DATA FD99 FFE9
CODE FFEA FFF7
DATA FFF8 FFFF



Note: the program uses interlaced graphics for moving objects. Every other scanline's data is grabbed 134 bytes away from the rest of the shape's data. Also, much of the first segment's romspace...$D63A-$DFF1...is completely unused. Had Atari taken a bit more time optimizing the code, they may have been able to use 4k chips for production. Surprising how many games wasted money like this (including Asteroids, their first ever bankswitched game)."

Share this post


Link to post
Share on other sites

I have to be honest, the decompiled rom I don't see how anyone can make heads or tails of that. It's not source code but more data output. Any pointers?

Share this post


Link to post
Share on other sites

Regarding Star Raiders difficulty switch reassignments: How would you then handle auto/manual modes for the attack computer and shields? Via added game selections? BTW these are the program areas you'd need to change for button reassignments.

LF1DB:
bit SWCHB ;4
bpl LF1F2 ;2 skip ahead if auto shields
lda $EE ;3
and #$1F ;2
bne LF1F2 ;2
lda $DB ;3
bit INPT3 ;3
bmi LF1F2 ;2 branch if shields button not pressed
eor #$80 ;2
sta $DB ;3
bne LF207 ;2
LF1F2:
bit SWCHB ;4
bvc LF207 ;2 skip ahead if auto computer
lda $EE ;3
and #$1F ;2
bne LF207 ;2
lda $DB ;3
bit INPT2 ;3
bmi LF207 ;2 branch if computer button not pressed
eor #$40 ;2
sta $DB ;3
LF207:
LF29B:
jsr LFD90 ;6
bit INPT5 ;3
bmi LF2A5 ;2 branch if hyperwarp button not pressed
jsr LFB04 ;6
LF2A5:
bit $FB ;3
bmi LF2F2 ;2
jsr LFD90 ;6
bit INPT2 ;3
bmi LF2B6 ;2 branch if fore view not pressed
lda $FB ;3
and #$FB ;2
sta $FB ;3
LF2B6:
sta WSYNC ;3
bit INPT3 ;3
bmi LF2C2 ;2 branch if map button not pressed
lda $FB ;3
ora #$04 ;2
sta $FB ;3
LF2C2:
  • Like 1

Share this post


Link to post
Share on other sites

WIP...needs some fixing (as well as 7800 support, and auto modes via game select). Spared a byte of ram by eliminating the indirect jump ($FC). I did get hyperwarp to be set to the stick button when the map is shown, tho :)

 

YESSSS!!!! I still would like to learn how you did this on the 8K game. Most of the decompilers I looked into were 4K.

 

Trying out the rom now.

Share this post


Link to post
Share on other sites

They work with 4k because that is the most ROM memory that the console is able to work with (due to the 13-bit address line of the 6507). So you need to split larger games into separate chunks and do them individually. The size of each chunk depends on which banking scheme the ROM employed (2 parts of 4k each in this case). The act of switching from one bank to another means that the auto code detection of Distella will fail in areas that use it, so configuration files must be created as you discover the code and data sections to aid in disassembly (playing a game for a while in Stella and then checking the debugger can help here...it'll figure out those sections on its own as the program runs).

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