Final Fight (arcade) for the Atari STE/Falcon030

All about games on the Falcon, TT & clones

Moderators: Mug UK, lp, moondog/.tSCc., [ProToS], Moderator Team

Post Reply
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

This is a thread for an attempt to "port" the CPS arcade game Final Fight to the Atari STE and Atari Falcon030 machines.

Be aware that I'll use this thread for updates on the development and other news or interesting things/findings around this topic. So do not expect a full game soon(tm). :D

Final Fight was a long time candidate for a port but disassembling the original arcade code was a true nightmare due to use of linked lists and word addressing (since the CPS RAM can be accessed by this method). Anyway, the current version can now be reassembled (with changes and optimizations) and works again (except for a small glitch) using MAME.

Here's a very short video showing Haggar's introduction part of the attract mode (Haggar's piledriving move):

https://www.youtube.com/watch?v=Q7eM5v5E4G8

Stay tuned for more information and feel free to comment... :cheers:

Edit: spelling
Last edited by Anima on Sat Feb 18, 2023 12:23 pm, edited 1 time in total.
stormy
Atari God
Atari God
Posts: 1691
Joined: Tue Jan 26, 2016 12:39 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by stormy »

That'd be amazing!! Looking forward to following this.
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

So what's different now compared to the disassembly of Daimakaimura?

Mainly the code is now relocatable so it is not tied to the low memory space area where it used to reside. This is a big advantage because the OS data and variables area is not being overwritten so I can use file access functions to load assets from within the emulator.
User avatar
dlfrsilver
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2325
Joined: Mon Jan 31, 2005 1:41 am

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by dlfrsilver »

Anima wrote: Sat Feb 18, 2023 11:16 am This is a thread for an attempt to "port" the CPS arcade game Final Fight to the Atari STE and Atari Falcon030 machines.

Be aware that I'll use this thread for updates on the development and other news or interesting things/findings around this topic. So do not expect a full game soon(tm). :D

Final Fight was a long time candidate for a port but disassembling the original arcade code was a true nightmare due to use of linked lists and word addressing (since the CPS RAM can be accessed by this method). Anyway, the current version can now be reassembled (with changes and optimizations) and works again (except for a small glitch) using MAME.

Here's a very short video showing Haggar's introduction part of the attract mode (Haggar's piledriving move):

https://www.youtube.com/watch?v=Q7eM5v5E4G8

Stay tuned for more information and feel free to comment... :cheers:

Edit: spelling
Capcom CPS sprites references are laid into the program in an easy to get format.
Now SPS France representative since the 19th of June 2014. Proud to be an SPS member !
Atari 520 STF / Atari 1040 STF / Atari 520 STE / Atari 1040 STE / Atari Falcon 030 14mb + 8gb CF
marss
Atari Super Hero
Atari Super Hero
Posts: 568
Joined: Thu Nov 07, 2002 12:29 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by marss »

Exiting ;)
User avatar
dlfrsilver
Fuji Shaped Bastard
Fuji Shaped Bastard
Posts: 2325
Joined: Mon Jan 31, 2005 1:41 am

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by dlfrsilver »

a small hint on Haggar Pile driver :

; Assign points haggar pile driver
00D39E move.w #$13, D0

00D3A2 tst.b ($13,A6)
00D3A6 beq $d3ac

00D3A8 ori.b #$80, D0
00D3AC jmp $2852.w
; Assign points haggar pile driver

00D3C8 clr.b ($98,A6)
00D3CC clr.b ($43,A6)
00D3D0 clr.b ($40,A6)
00D3D4 clr.b ($42,A6)
00D3D8 move.b #$1c, ($3,A6)
00D3DE clr.w ($4,A6)
00D3E2 rts
00D3E4 move.b ($4,A6), D0
00D3E8 move.w ($6,PC,D0.w), D1
00D3EC jmp ($2,PC,D1.w)
00D3F8 move.b #$2, ($4,A6)
00D3FE clr.b ($1e,A6)
00D402 clr.b ($a9,A6)
00D406 clr.b ($63,A6)
00D40A move.b ($14,A6), ($69,A6)
00D410 move.w #$400, ($54,A6)
00D416 move.w #$400, ($50,A6)
00D41C move.w #$48, ($56,A6)
00D422 tst.b ($2e,A6)
00D426 beq $d42e
00D42A neg.w ($50,A6)
00D42E bsr $c380
00D432 jmp $6c3c.w
00D436 tst.b ($17,A6)
00D43A beq $d442
00D43C subq.b #1, ($17,A6)
00D440 rts
00D442 tst.b ($1e,A6)
00D446 beq $d452
00D44A subq.b #1, ($1e,A6)
00D44E bra $d508
00D452 jsr $309a.w
00D456 tst.w ($50,A6)
00D45A beq $d462
00D45E jsr $6c58.w
00D462 move.w #$10, D0
00D466 jsr $7c96.w
00D46A beq $d4a8
00D46E bmi $d4a8
00D472 tst.b ($a9,A6)
00D476 bne $d4a8
00D478 move.b #$7, ($3f,A6)
00D47E jsr $9db8.l
00D484 move.w ($18,A6), ($1a,A6)
00D48A move.b #$1, ($a9,A6)
00D490 bsr $d74c
00D494 clr.w ($50,A6)
00D498 move.b #$8, ($1e,A6)
00D49E tst.w ($54,A6)
00D4A2 bmi $d4a8
00D4A4 clr.w ($54,A6)
00D4A8 move.w ($a,A6), D0
00D4AC cmp.w ($e,A6), D0
00D4B0 bhi $d508
00D4B2 bsr $c45c
00D4B6 jsr $aaa.w
00D4BA tst.b ($a9,A6)
00D4BE bne $d4dc
00D4C0 move.b #$7, ($3f,A6)
00D4C6 jsr $9db8.l
00D4CC move.w ($18,A6), ($1a,A6)
00D4D2 move.b #$1, ($a9,A6)
00D4D8 bsr $d744
00D4DC move.b #$4, ($4,A6)
00D4E2 move.l ($e,A6), ($a,A6)
00D4E8 move.w #$400, ($54,A6)
00D4EE move.w #$100, ($50,A6)
00D4F4 move.w #$48, ($56,A6)
00D4FA tst.b ($2e,A6)
00D4FE beq $d504
00D500 neg.w ($50,A6)
00D504 jsr $4496.w
00D508 jmp $3b02.w
00D50C jsr $309a.w
00D510 move.w #$10, D0
00D514 jsr $7c96.w
00D518 beq $d520
00D51A bmi $d520
00D51C clr.w ($50,A6)
00D520 move.w ($a,A6), D0
00D524 cmp.w ($e,A6), D0
00D528 bhi $d550
00D52A move.l ($e,A6), ($a,A6)
00D530 move.b #$6, ($4,A6)
00D536 move.w #$100, ($50,A6)
00D53C move.w #$10, ($52,A6)
00D542 tst.b ($2e,A6)
00D546 beq $d550
00D548 neg.w ($50,A6)
00D54C neg.w ($52,A6)
00D550 jmp $3b02.w
00D554 jsr $3b02.w
00D558 jsr $3122.w
00D55C beq $d56a
00D55E move.w #$10, D0
00D562 jsr $7c96.w
00D566 beq $d594
00D568 bmi $d594
00D56A tst.w ($18,A6)
00D56E bpl $d57e
00D570 clr.b ($42,A6)
00D574 move.l #$4000000, ($2,A6)
00D57C rts
00D57E clr.b ($40,A6)
00D582 clr.b ($42,A6)
00D586 move.b #$8, ($3,A6)
00D58C clr.w ($4,A6)
00D590 bra $c4bc
00D594 rts
00D596 move.b ($4,A6), D0
00D59A move.w ($6,PC,D0.w), D1
00D59E jmp ($2,PC,D1.w)
00D5AA move.b #$2, ($4,A6)
00D5B0 clr.b ($1e,A6)
00D5B4 clr.b ($a9,A6)
00D5B8 clr.b ($63,A6)
00D5BC addi.w #$14, ($a,A6)
00D5C2 move.w #$800, ($54,A6)
00D5C8 move.w #$200, ($50,A6)
00D5CE move.w #$48, ($56,A6)
00D5D4 tst.b ($2e,A6)
00D5D8 bne $d5e0
00D5DC neg.w ($50,A6)
00D5E0 bra $c416
00D5E4 tst.b ($17,A6)
00D5E8 beq $d5f0
00D5EA subq.b #1, ($17,A6)
00D5EE rts
00D5F0 tst.b ($1e,A6)
00D5F4 beq $d600
00D5F8 subq.b #1, ($1e,A6)
00D5FC bra $d6b6
00D600 jsr $309a.w
00D604 tst.w ($50,A6)
00D608 beq $d610
00D60C jsr $6c58.w
00D610 move.w #$10, D0
00D614 jsr $7c96.w
00D618 beq $d656
00D61C bmi $d656
00D620 tst.b ($a9,A6)
00D624 bne $d656
00D626 move.b #$7, ($3f,A6)
00D62C jsr $9db8.l
00D632 move.w ($18,A6), ($1a,A6)
00D638 move.b #$1, ($a9,A6)
00D63E bsr $d74c
00D642 clr.w ($50,A6)
00D646 move.b #$8, ($1e,A6)
00D64C tst.w ($54,A6)
00D650 bmi $d656
00D652 clr.w ($54,A6)
00D656 move.w ($a,A6), D0
00D65A cmp.w ($e,A6), D0
00D65E bhi $d6b6
00D660 bsr $c45c
00D664 jsr $aaa.w
00D668 tst.b ($a9,A6)
00D66C bne $d68a
00D66E move.b #$7, ($3f,A6)
00D674 jsr $9db8.l
00D67A move.w ($18,A6), ($1a,A6)
00D680 move.b #$1, ($a9,A6)
00D686 bsr $d744
00D68A move.b #$4, ($4,A6)
00D690 move.l ($e,A6), ($a,A6)
00D696 move.w #$400, ($54,A6)
00D69C move.w #$100, ($50,A6)
00D6A2 move.w #$48, ($56,A6)
00D6A8 tst.b ($2e,A6)
00D6AC bne $d6b2
00D6AE neg.w ($50,A6)
00D6B2 jsr $4496.w
00D6B6 jmp $3b02.w
00D6BA jsr $309a.w
00D6BE move.w #$10, D0
00D6C2 jsr $7c96.w
00D6C6 beq $d6ce
00D6C8 bmi $d6ce
00D6CA clr.w ($50,A6)
00D6CE move.w ($a,A6), D0
00D6D2 cmp.w ($e,A6), D0
00D6D6 bhi $d6fe
00D6D8 move.l ($e,A6), ($a,A6)
00D6DE move.b #$6, ($4,A6)
00D6E4 move.w #$100, ($50,A6)
00D6EA move.w #$10, ($52,A6)
00D6F0 tst.b ($2e,A6)
00D6F4 bne $d6fe
00D6F6 neg.w ($50,A6)
00D6FA neg.w ($52,A6)
00D6FE jmp $3b02.w
00D702 jsr $3b02.w
00D706 jsr $3122.w
00D70A beq $d718
00D70C move.w #$10, D0
00D710 jsr $7c96.w
00D714 beq $d742
00D716 bmi $d742
00D718 tst.w ($18,A6)
00D71C bpl $d72c
00D71E clr.b ($42,A6)
00D722 move.l #$4000000, ($2,A6)
00D72A rts
00D72C clr.b ($40,A6)
00D730 clr.b ($42,A6)
00D734 move.b #$8, ($3,A6)
00D73A clr.w ($4,A6)
00D73E bra $c4bc
00D742 rts
00D744 tst.w ($18,A6)
00D748 bmi $d752
00D74A rts
00D74C tst.w ($18,A6)
00D750 bpl $d762
00D752 moveq #$0, D0
00D754 move.b ($14,A6), D0
00D758 add.b D0, D0
00D75A add.b D0, D0
00D75C movea.l ($8,PC,D0.w), A0
00D760 jmp (A0)
00D762 jmp $aaa.w
00D772 jsr $3bec ; Random
00D776 andi.w #$1f, D0
00D77A move.b ($6,PC,D0.w), ($99,A6)
00D780 rts
00D7A2 jsr $3bec ; Random
00D7A6 andi.w #$1f, D0
00D7AA move.b ($6,PC,D0.w), ($97,A6)
00D7B0 rts
00D7D2 jsr $3bec ; Random
00D7D6 andi.w #$1f, D0
00D7DA move.b ($6,PC,D0.w), ($97,A6)
00D7E0 rts
Now SPS France representative since the 19th of June 2014. Proud to be an SPS member !
Atari 520 STF / Atari 1040 STF / Atari 520 STE / Atari 1040 STE / Atari Falcon 030 14mb + 8gb CF
User avatar
Estrayk
Captain Atari
Captain Atari
Posts: 348
Joined: Mon Nov 23, 2015 2:52 pm
Location: Spain

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Estrayk »

Amazing Anima !!! we are all looking forward to the progress
・Falcon ct60e・Atari MegaSTE ・Atari STe ・
User avatar
masteries
Atari Super Hero
Atari Super Hero
Posts: 509
Joined: Thu Jul 16, 2015 4:05 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by masteries »

Great!
User avatar
Ragstaff
Atari Super Hero
Atari Super Hero
Posts: 746
Joined: Mon Oct 20, 2003 3:39 am
Location: Melbourne Australia
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Ragstaff »

Love this, looking forward to the updates!
User avatar
Cyprian
10 GOTO 10
10 GOTO 10
Posts: 3262
Joined: Fri Oct 04, 2002 11:23 am
Location: Warsaw, Poland

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Cyprian »

great news @Anima
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
Hatari / Steem SSE / Aranym / Saint
http://260ste.atari.org
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

Short update: the program now runs on the Falcon 030 as well.

In fact the code was running already on the Falcon but it was impossible to start and it "waits" infinitely for something. The game did not crash at all so it was not easy to find the reason just by comparing the lenghty trace output with the Atari STE. :coffe:

However, on a second thought there is a suspicious trap exception handling including stack frame modifications and it was indeed the right location to fix it. :D
marss
Atari Super Hero
Atari Super Hero
Posts: 568
Joined: Thu Nov 07, 2002 12:29 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by marss »

Great ;) Will it run on the CT060?
User avatar
Cyprian
10 GOTO 10
10 GOTO 10
Posts: 3262
Joined: Fri Oct 04, 2002 11:23 am
Location: Warsaw, Poland

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Cyprian »

Anima wrote: Fri Mar 03, 2023 10:49 am Short update: the program now runs on the Falcon 030 as well.

In fact the code was running already on the Falcon but it was impossible to start and it "waits" infinitely for something. The game did not crash at all so it was not easy to find the reason just by comparing the lenghty trace output with the Atari STE. :coffe:

However, on a second thought there is a suspicious trap exception handling including stack frame modifications and it was indeed the right location to fix it. :D
do you mean a size of exception stack frame 68000 vs 68020?
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
Hatari / Steem SSE / Aranym / Saint
http://260ste.atari.org
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

Cyprian wrote: Fri Mar 03, 2023 11:21 am do you mean a size of exception stack frame 68000 vs 68020?
Exactly. :cheers:

Here's a short video how it actually looks like: https://youtu.be/dC08zivMKQ0

Description: I am starting a two player game and after some seconds of crap playing I am skipping the first scene with the MAME cheat. ;)
jd
Atari Super Hero
Atari Super Hero
Posts: 528
Joined: Thu Nov 09, 2006 12:38 pm
Location: Ruislip, UK

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by jd »

Cool, can't wait for a playable demo.
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

I would like to get some feedback from users with a MC68040 or MC68060. ;)

Please follow the instructions in the archived readme.txt how to rebuild the binaries. Note: start the program in ST-Low resolution without anything else loaded like ACCs.

https://www.anides.de/ffight.zip
marss
Atari Super Hero
Atari Super Hero
Posts: 568
Joined: Thu Nov 07, 2002 12:29 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by marss »

What a cruelty no to give the bin to the ones (like me) unable to built it !!!
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

marss wrote: Sat Mar 04, 2023 8:32 pm What a cruelty no to give the bin to the ones (like me) unable to built it !!!
I'll have a look if there's a better way to rebuild the binary without any command line tools... :(
marss
Atari Super Hero
Atari Super Hero
Posts: 568
Joined: Thu Nov 07, 2002 12:29 pm

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by marss »

Please consider ;)
Rustynutt
Atari God
Atari God
Posts: 1846
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Rustynutt »

same here :) 68040 Afterburner is waiting.
User avatar
Estrayk
Captain Atari
Captain Atari
Posts: 348
Joined: Mon Nov 23, 2015 2:52 pm
Location: Spain

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Estrayk »

same here :) 68060 ct60e is waiting.
・Falcon ct60e・Atari MegaSTE ・Atari STe ・
EvilFranky
Atari Super Hero
Atari Super Hero
Posts: 926
Joined: Thu Sep 11, 2003 10:49 pm
Location: UK

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by EvilFranky »

Actual sprites, nice!

Can Videl be programmed for a 384×224 resolution?
User avatar
Anima
Atari Super Hero
Atari Super Hero
Posts: 932
Joined: Fri Mar 06, 2009 9:43 am
Contact:

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Anima »

EvilFranky wrote: Wed Mar 08, 2023 11:20 pm Can Videl be programmed for a 384×224 resolution?
In general yes. However, I want to keep the VIDEL cycles as low as possible so actually I am targeting a 320 x 224 pixel resolution first.
User avatar
Estrayk
Captain Atari
Captain Atari
Posts: 348
Joined: Mon Nov 23, 2015 2:52 pm
Location: Spain

Re: Final Fight (arcade) for the Atari STE/Falcon030

Post by Estrayk »

Anima wrote: Thu Mar 09, 2023 8:11 am
EvilFranky wrote: Wed Mar 08, 2023 11:20 pm Can Videl be programmed for a 384×224 resolution?
In general yes. However, I want to keep the VIDEL cycles as low as possible so actually I am targeting a 320 x 224 pixel resolution first.
So the sprites will be the same size but the playing area will be a bit less wide, right?
・Falcon ct60e・Atari MegaSTE ・Atari STe ・
Post Reply

Return to “Games”