Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I remember seeing a GG code, but no PAR code for keeping the enemy down. I think it might be useful to you the Dizzy Meter. It increases each time you connect, & when it reaches certain #, it'll drop to 0 & the enemy will get dizzy... Dizzy Meter: 7E092B XX
I'm the best in the Universe! Remember that!
Joined: 5/9/2008
Posts: 35
Location: USA
Hi all, I was bored last week and started messing around with Lua scripting, trying to write a tool to brute force super punch out fights. It isn't quite fast enough at the moment, but I'm bored working on it, and thought someone else might find want to play with it or improve it (yes, I know the code is atrocious. I just wanted to get something working fast): http://www.cc.gatech.edu/~ntclark/software/punchout_brute_force.lua If you've got a fast CPU and enough time on your hands, you could probably prove some of the shorter fights (e.g., piston hurricane) are optimal in Phil's movie. But even if you couldn't care less about lua, there are quite a few useful memory addresses documented in the script, which I haven't seen collected in any other location.
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
If I only knew LUA I would gladly help you with this project as I'm interested in improvements of this game. Looking at the memory addresses you mention on the script, seems that you found some useful ones, like where you can punch the enemy, though it seems you miss one where the opponent is dizzy, I think it was this code 7E0876 00. I also wanted to find more memory addresses but I currently don't have much free time to do so :( There's also another one that is supposed to determine how long will the opponents will stay down (7E0B36), although I tried to modify it & got not noticeable results... BTW, can something like this code be changed to PAR? Most opponents stay down for the count: DFAB-DDDD AF6D-D190 DFAB-AFDD
I'm the best in the Universe! Remember that!
Joined: 5/9/2008
Posts: 35
Location: USA
The PAR codes are just an address followed by a value, so it's pretty easy to turn the addresses in the script into PAR codes (and vice-versa). For example, if you wanted the opponent to always be hittable in the top-right (address 7e096b) use the PAR code 7e096ba0, where the the last two digits, a0, are 160 (unblocked) in hex.
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I know what PAR codes are, I even have a section of PAR codes I've made on my page... That's not what I was asking with my question. What I wanted to know is if there's a way to change the "Most opponents stay down for the count" GG code into PAR code. I think it would help to understand why some opponents stay down & some others don't...
I'm the best in the Universe! Remember that!
Joined: 5/9/2008
Posts: 35
Location: USA
Ah, sorry about that. I was confused about what you were asking. GG -> PAR conversion: http://www.videogamesource.com/genie/gg/gghandbk/p12.html
Post subject: Super Punch-Out!! Question
Joined: 5/7/2012
Posts: 3
I'm somewhat new to the site and instead of looking through tons of pages I figured I would just make a new thread that will be buried soon. I basically just had a question about how the Super Punch-Out!! run was timed. It says 15:59 which is the real time so if that is the timing that this site uses, then wouldn't it be faster for the TASer to get slower fight times in some cases to eliminate the time it takes for the countdown? Like I believe that a 1 knockdown KO on Bear Hugger would be faster than the 2 KD KO even though it is slower in fight time. This may have been answered somewhere else and if so I apologize.
Emulator Coder
Joined: 3/9/2004
Posts: 4588
Location: In his lab studying psychology to find new ways to torture TASers and forumers
The time that appears in the title of a run is based on the amount of frames that occurred in the run. You want that number minimized. In the description of the run, we also mention in game time that appears for each fight. We view the former as what to strive for, as it exists for every game. But in some games, we also have runs that try to break "world records" that are based on the latter.
Warning: Opinions expressed by Nach or others in this post do not necessarily reflect the views, opinions, or position of Nach himself on the matter(s) being discussed therein.
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
This run in particular aims first to minimize the in-game timer. This is, as Nach mentions, to break world records, since these times are saved on a record list. The 2nd objective is to minimize the length of the movie, this is where the real time applies (as long as the first goal is met prior to this one). And that is why the pause glitch is only used once, as even if it helps getting the power meter fill sooner, it will length the overall time of the movie w/o actually being faster in-game.
I'm the best in the Universe! Remember that!
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3570)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Also, 99% or more of the site is centered around aiming for fastest real time. As such the site is programmed to show this. In rare cases like this movie, real time doesn't accurately reflect the goals or achievements in the movie. Rather than accommodating fringe cases, we simply put the times in the description. I can see how this causes a bit of confusion though. If aiming for real time were the goal however, you would be right about Bear Hugger, and probably several other fighters.
It's hard to look this good. My TAS projects
Joined: 8/21/2012
Posts: 5
Location: Donkey Kong Country
So would it be worth somebody's time to do a "real time" TAS? Or is the current run using in-game time considered the goal? Just curious.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3570)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
I don't think a real-time run would be worth it. The differences would be minor, and slower clock times is less impressive. (imo)
It's hard to look this good. My TAS projects
Joined: 8/21/2012
Posts: 5
Location: Donkey Kong Country
Fair enough. That's what I figured.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4042
This might be amusing: As of today, every single fight but one now has a perfect run in real time (in game time matching the TAS time): Link to video Narcis is the only one left.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
I'll watch the video later, just hope is not from PAL because the timing is different & you can get lower records there...
I'm the best in the Universe! Remember that!
QuizmasterBos
He/Him
Joined: 6/23/2013
Posts: 136
samurai goroh wrote:
I'll watch the video later, just hope is not from PAL because the timing is different & you can get lower records there...
Nope, it's NTSC. According to the title anyway.
Player (37)
Joined: 2/16/2012
Posts: 282
Copypasta from what I posted on SDA: Below is the RNG sequence in SPO. It calls this most frames while the game is active, regardless of whether you're in a fight or not.
00b15a jsr $ccb7     [00ccb7] A:0002 X:0000 //Start RNG sequence
00ccb7 lda #$00               A:0002 X:0000 //Clear the accumulator
00ccb9 xba                    A:0000 X:0000 //Clear X
00ccba lda $0090     [000090] A:0000 X:0000 //Load the Button Masks
00ccbd clc                    A:0000 X:0000
00ccbe adc $0091     [000091] A:0000 X:0000 //Add to the Direction Masks
00ccc1 adc $004e     [00004e] A:0040 X:0000 //Add to current Button Sum
00ccc4 sta $004e     [00004e] A:0089 X:0000 //Store back into Button Sum
00ccc7 lda $0043     [000043] A:0089 X:0000 //Load decrementing frame counter
00ccca sbc $004e     [00004e] A:00c7 X:0000 //Subtract the Button Sum
00cccd tax                    A:003d X:0000 //Transfer Accumulator to X
00ccce lda $bc2f,x   [00bc6c] A:003d X:003d //Load from RNG Table
00ccd1 sta $004d     [00004d] A:0085 X:003d //Store into RNG address
00ccd4 rts                    A:0085 X:003d //End subroutine
Different buttons correspond to different bits in the Button/Direction Masks. Pressing multiple buttons/directions at the same time will have both bits be set for as many frames as they are held. It also means that not pressing any buttons will make the Button Sum not change. The RNG Table is at 0x00003C2F in the ROM.
Experienced player (656)
Joined: 11/23/2013
Posts: 2230
Location: Guatemala
So not too long ago, a hidden multiplayer mode was discovered in this game that lets the 2nd player play as the opponent. https://twitter.com/new_cheats_news/status/1556727895778856960 Zallard1, after playing through the game with this new discovery on stream, would later make a full TAS of the game while using this mode. Naturally the fights are quite a bit shorter like this. Reading the video description is recommended. Link to video
Here, my YouTube channel: http://www.youtube.com/user/dekutony
Editor, Player (54)
Joined: 12/25/2004
Posts: 634
Location: Aguascalientes, Mexico
That was very interesting, both the existence of a new mode and the TAS itself. Thanks for the share, dekutony
I'm the best in the Universe! Remember that!