Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Just chiming in to say that to my best knowledge, this run does indeed not perform arbitrary code execution (ACE). Since people are being so skeptical of it, though, I wonder if somebody could made a Bizhawk fork that would report whether ACE has been performed on a given movie? The OAM DMA routine might require a special case but beyond that it shouldn't be that difficult.
I would take a shot at it but running Bizhawk is troublesome on Linux so there's my excuse. I just imagine a "ACE verification" pass might be more convincing, since the rules would be, well, codified.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Hey XTREMAL93, thank you for your contribution! Slowly but surely, I'm building a collection. I finally managed to register on the World of Longplays forum, too (had problems with the verification email coming through), so I opened a thread there.
As for my machine learning projects, so far I've trained a neural network to tell Sonic 1 and 2 screenshots apart, no matter how blurry or stretched they are. I've also built an auto-encoder for Sonic 1 screenshots, I describe how it works in this post. This is just the beginning though, I'm still learning. I have plenty of other ideas, like predicting actual data in memory or working with tiles as opposed to pixels for interesting visual output. However before I continue working on these projects I'll need multiple movie files of casual gameplay for each game I want to work with. YouTube playthroughs simply aren't enough.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Aran, that is amazing information you have given me. The paper you've linked is super exciting and on a topic I've given much thought in the past, and certainly ties into some of my projects... I'll definitely be reading it and possibly getting in touch with the authors.
I also agree that a database of longplay movie files would be a useful resource for TASing as well as speedrunners and others. With a smarter way to seek or at least some manual chapter checkpoints, it's can be used as a savestate database on steroids.
Personally I'm not too interested in Super Metroid but I see huge value in your movie files of hacks from a preservationist standpoint. I think you should definitely publish them :)
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
I actually didn't realize World of Longplays had such a nice database on their website. Unfortunately, it is just a database of videos, when I check out their Sonic 2 longplay the original movie file is not on offer. That's a shame, I suppose I should give them a visit and convince them that publishing those would be a good idea :)
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Hi,
I'm looking to use gameplay footage for machine learning purposes. There are a lot of longplays available on YouTube, but those universally suffer from compression artifacts stemming from video processing, plus I may want to use data from RAM to teach the neural network. TAS movie files are perfect for this purpose, because I can take original quality screenshots and log memory, but... TASes have the explicit goal of beating the game as fast as possible, while for machine learning you want as much footage of the game as possible, and those two goals are at odds.
So my primary question is, does anybody know if there is a collection or database of movie files which are not TASes or speedruns? If not, I think it would be an interesting initiative to start.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
I like to think of it as a nice middle ground, yes, showcasing both superhuman gameplay and breaking the game with a cool glitch. And somebody who finds the gameplay in this run boring would surely find the full game even more boring.
Full disclosure though that I was the one to invent the Coin Case ACE exploit and make the first RTA run, so I'm very much biased towards this category. Just putting forth my view though! :)
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Personally, I just see save corruption as dull. It absolutely has technical merit, but since it showcases so little gameplay, I think there should always be space for a NSC run to stand out, even from an entertainment perspective: most viewers may not be sated after a 3 minute run and want to see more.
I also don't think it's difficult for people to see the technical difference. Forget infosec, everybody knows you shouldn't turn off the power while saving! It's far more straightforward to explain than ACE, that's for sure.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
I'm happy to see a TAS that does the Coin Case route justice now. I don't want to sound dramatic but it's always disappointing to me when a save corruption route obsoletes NSC. Call it bias :)
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
ThunderAxe31 wrote:
This game is much less famous (and infamous) than its prequel, and in my opinion is also very low quality for a GBA game, mainly due to bland graphics and music.
I almost take offense to this. In my opinion the graphics in this game are very impressive, in particular the battles, featuring detailed backgrounds and animated Denjuu, are fast paced and dynamic. The GBA Pokémon games pale in comparison!
As for the soundtrack, which, by the way, was composed by Minako Adachi who went on to join the Pokémon music team from Black/White 2 onwards, is top notch and thanks to the Natsume sound driver, beats most GBA games in sample quality as well.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
You should be able to walk directly down as soon as you enter Cerulean. It'll look a bit glitchy, but you'll arrive in Saffron just fine, and won't need to ever walk left.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
I made a mistake in my post on GCL and it's caused a lot of confusion. Apologies.
A Lv. 8 Bulbasaur with 16 PP of move 2 and 32 PP of move 3 will work (not the other way around).
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
There's definitely arbitrary code potential in some of the "underworld" (kennel glitch) rooms that crash. I did check one at some point though, and it just jumped somewhere invalid in ROM. Also, you're gonna be hard pressed to actually find some memory manipulatable enough.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Paired versions of Pokémon seem like an obvious choice. You could even link them!
How about Pokémon Red&Blue, complete pokédex in both (via trading), using the same input file for either game?
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
T'was my idea. I realized that we could reset for an useful trainer ID, much like the TAS does. With no reliance on Return and Wooper it was almost guaranteed to be faster than the existing WR regardless of the chances (number of resets).
2/65536 turned into ~200/65536 turned into 2/256 turned into 4/256 (1/64), and Dabomstew actually made the route and Shenanagans ran it and here we are.
This is the second time I've ruined this category.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Why did nobody tell me about this?
Nice work. I don't really have any comments about this run, but I think a route which would pass on naming the boxes and do some extreme RNG manipulation to get down DVs and a trainer ID which would spell out a bootstrap would be faster.
Also, there might still be some useful subframe-perfect save reset.
main.asm doesn't contain everything; in fact, it's in the proccess of being split into smaller files. If you haven't yet, definitely check out the entire disassembly. There may already be interesting things in battle/, engine/ etc.
About Pokérus, yeah, though the probabilities are really low, so I don't know how feasible it would be to manipulate. (I haven't tried RNG manipulation yet.)
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Zowayix wrote:
Apparently, in Gen II only, when you use a damaging move, if you have the Badge corresponding to the type of that move, the move's damage is multiplied by 9/8. This is in addition to the 9/8 boost that four of the Badges already apply to the user's stats.
Can anyone with disassembly knowledge confirm this? These are the only two sites that mention this mechanic (although they are definitely quite reputable). (A site like Smogon, which does really detailed breakdowns of most battle mechanics, wouldn't mention this at all since it doesn't apply in multiplayer.)
This is true. In real-time speedruns, it's what makes Fury Cutter viable against the Azalea rival.
It's handled by function DoBadgeTypeBoosts (currently in main.asm).
DoBadgeTypeBoosts: ; fbe24
ld a, [InLinkBattle]
and a
ret nz
ld a, [$cfc0]
and a
ret nz
ld a, [hBattleTurn]
and a
ret nz
push de
push bc
ld hl, .BadgeTypes
ld a, [KantoBadges]
ld b, a
ld a, [JohtoBadges]
ld c, a
.CheckBadge
ld a, [hl]
cp $ff
jr z, .done
srl b
rr c
jr nc, .NextBadge
ld a, [$d265] ; move type
cp [hl]
jr z, .ApplyBoost
.NextBadge
inc hl
jr .CheckBadge
.ApplyBoost
ld a, [CurDamage]
ld h, a
ld d, a
ld a, [CurDamage + 1]
ld l, a
ld e, a
srl d
rr e
srl d
rr e
srl d
rr e
ld a, e
or d
jr nz, .asm_fbe6f
ld e, 1
.asm_fbe6f
add hl, de
jr nc, .Update
ld hl, $ffff
.Update
ld a, h
ld [CurDamage], a
ld a, l
ld [$d257], a
.done
pop bc
pop de
ret
.BadgeTypes
db FLYING ; zephyrbadge
db BUG ; hivebadge
db NORMAL ; plainbadge
db GHOST ; fogbadge
db STEEL ; mineralbadge
db FIGHTING ; stormbadge
db ICE ; glacierbadge
db DRAGON ; risingbadge
db ROCK ; boulderbadge
db WATER ; cascadebadge
db ELECTRIC ; thunderbadge
db GRASS ; rainbowbadge
db POISON ; soulbadge
db PSYCHIC ; marshbadge
db FIRE ; volcanobadge
db GROUND ; earthbadge
db $ff
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Gambatte had three bugs that I knew of (and reported in #tasvideos). Only two are relevant to the Coin Case exploit, though.
The GB CPU has a few undefined opcodes; they all do nothing but lock up the CPU. Gambatte ignored those, allowing exploits which would freeze up the real console.
Furthermore, under certain conditions (not an expert on this one), the STOP instruction should lock up the CPU as well, but it was simply ignored in Gambatte. (This turned out to be an issue in runs of Gold when somebody reported new strats under Bizhawk, only for them to be revealed to freeze console two days later)
The third bug has to do with MBC3 (and possibly MBC5 behavior); when bankswitching to bank 0, bank 1 should be accessible at 4000-7fff. Gambatte showed bank 1. This is observable in Pokémon Red, where the naming screen would have a glitchy tile in place of ED in the bottom right corner if the bug is present.
Experienced Forum User, Published Author, Player
(26)
Joined: 4/25/2011
Posts: 33
Zowayix wrote:
Looks like someone beat the current TAS record by about 4.5 minutes...in real time.
http://www.youtube.com/watch?v=c9EfVBGK-GU
tl;dw: A new Coin Case arbitrary execution strategy that involves renaming the PC boxes and only requires one use of the Coin Case.
Yup, that's (mostly) my work. Since I documented Coin Case in the first place, I figured I might as well do a route to beat the game faster than the TAS(es), in real time.
You can see the current route over here.
I have a very theoretical route for a TAS, too, but it's still in the works. It would involve extremely heavy RNG abuse. (And hopefully no boxes.)