Post subject: Dragon View
Joined: 8/3/2004
Posts: 325
I was trying to think what to do today and i remembered about this game, and after playing a bit i think it would make for a nice time-attack. I think a run would be around 2 hours but i could be way off, i havent beat it in a long time. One thing though it will probably require a lot of planning on what to get and when if someone decides to make a run of this game but the game is pretty straight forward story wise Well for a few ideas i think getting SOME health upgrades would be wise because the special sword attack uses some of your HP. Other than that i'm pretty sure not getting the Hauza weapon and just sticking to the sword is a lot faster in every case Items that would need to be picked up would be sword upgrades and the special sword attack for certain, and probably the fire spell ( althought i think you need it to continue the game in the ice palace anyways.. ) So, any thoughts on this game?
Experienced player (527)
Joined: 11/14/2004
Posts: 169
Location: Mirabel, Québec, Canada
I tried Dragon View about 2 months ago, it definitely has good potential. Taking the shortest routes in the 3D overworld isn't simple (and that part is evil with desyncs ...) so it can look impressive, and the dungeons and battles look really cool with the fast action. I think I got maybe 30% through, but was going to do a second run after for better planning and improvements once I'd have a more precise idea what to do. http://acmlm.cjb.net:2/emu/snes/snes9x/smv1/Dragon%20View%20(U).smv This goes up to the way back from Keire Temple (before going to the desert) in 42 minutes, I'm also estimating the total to be around 2 hours at the end. The run currently goes like this: 00:18 - Game start 02:13 - Go out of town after the intro. Activate the warp near Rysis, go to Hujia, talk to the guy mentioning the bombs, talk to Tylon to get the warehouse key 04:08 - Arsenal, to get the Hauza (and get to Level 2) 05:13 - Warehouse. Skip the armor upgrade, get to Level 3. Might have wasted a few seconds hitting monsters I didn't kill 06:20 - Boss: run back and forth throwing the Hauza until it dies, reach Level 4. Then go back out to Hujia and wait through the scene with Argos talking to the Demon Knight 08:55 - At Hujia, talk to Tylon to give the dynamite, buy 1 arrow from the shop (since I must go there anyway), buy the HP upgrade, get the bombs. Exit and go to Galys Pass 10:49 - Galys Pass. Kill monsters on the way to reach Level 5, get 10 fruit and the HP upgrade 12:31 - Out to the field. Activate the warp to the swamp, get the sword tech, get the Lightning ring, talk to Rodister (so I can get the Serpent Scales), then head to the swamps 15:16 - Into the swamps. Get the Lightning ring upgrade, activate the warp back to the field, get into a fight 17:19 - Use the sword tech to kill the 2 monsters for 1248 EXP each, jump to Level 9 ... so some of the previous leveling could probably be skipped. Then use the warp, get the bow, use the warp to Rysis 19:40 - At Rysis, get the Serpent Scales, take the warp back, go to the Fire Cave 21:43 - Fire Cave. Reach Level 10, get the MP upgrade and sword upgrade. Make fun of the 4 guys in the last room before the boss 25:13 - Boss: defeat in 9 seconds with 5 bombs, get to Level 11 and get the Fire ring. Then run back out and make fun of the 4 guys again. Go to Casdra then the snow mountain 28:25 - Snow mountain. Get the HP upgrade (waste of time, I go there anyway after Keire Temple), get the Hauza upgrade, get 2 MP upgrades (this is also where I use the 10 fruit) and reach Level 12. Then go to the fortress 32:06 - Fortress. Lost a few seconds by not jumping over melting ice spikes. Manipulate monster drops to get as much MP as possible while having full HP. 33:33 - Boss: normal attacks only do 1 damage, so I use the Fire ring then the sword tech (I had 1 MP left and 2 upgrades worth of HP left after this), and get to Level 13. Then get the Ice ring and second Hauza upgrade, skip the MP upgrade since the way there is too long, then go ahead to the next part 35:45 - Higher up in the mountain. Skip the second armor upgrade, get the second sword upgrade, enter Keire Temple. Not much to do there, except going through, killing some monsters, and getting destroyed by Giza showing off his evil powers, and I get to Level 14. Talk to the professor, walk back out 41:17 - Outside of Keire Temple. Go down to the snow mountain (stopped here), then to the field, and go to the desert I never get hit since it never saves time (except flames pushing me off to the side in the Fire Cave), but the sword tech costs enough HP so I still need some HP upgrades and refills. The few HP and MP upgrades I got might be almost enough for the rest of the game already, I just need to make sure I won't run out when I'm forced to use the sword tech or magic against monsters or bosses. The sword tech will probably get even more useful later in the game when my Level will fall behind so much that I'll do 1 damage to most monsters (the sword tech always adds 10 damage, so I'd do 11). I think I'm about 4 levels lower than normal where I'm at, that means 8 less damage and monsters always have 40 HP. I'm not perfectly sure yet if the long walk to the swamps at the start is worth it (I get a Lightning ring upgrade I know I'll need, open a warp, and gain a few levels), depends how much time it'll save once I'm really supposed to go there ... I'm pretty sure I won't need the Fire/Ice ring upgrades. I think the rest is about as optimal as it can get, except for a few things I mentioned, or unless I forgot something I'll need later. I know I'll need the bow and arrow at some point, not sure if I'll run out of bombs (used 5 on a boss) or need more fruit. I haven't worked on this since late April, I'm currently doing other runs (like Ys 3 on NES), but it's one I'd like to finish eventually since I beat the game twice on the SNES long ago.
Joined: 8/3/2004
Posts: 325
nice this is a good start, seems like every game im interested in someone has a run they started and didnt finish or finished and didnt submit =p and yeah definitly the worst part is the traveling, you gotta keep in mind the teleports and getting the shortest path is pretty annoying in the 3d world I was just wondering, is getting the Hauza really worth it ? it might save a bit of time for some bosses but it takes a while to actually get it.. well i guess it depends how many bosses its useful against
Joined: 8/3/2004
Posts: 325
Well, in the odd chance someone ever attemps to do a TAS of this : use zsnes! snes9x ALWAYS crashes at a certain point of the game (happened to me a few years ago, forgot about it, happened again a few weeks ago... so I tried on zsnes and it worked out well) This part is relatively far also so it's annoying (1st dragon temple) anyways, playing through the game again recently, the essential items are : fire ring, lvl2 lightning ring, ice ring, sword upgrades & special attack, story items (such as bombs, or the fairy thing close to the end game) a few MP upgrades are probably needed also because the 2nd dragon temple needs to have the ice ring used often Acmlm was a pretty good test run anyways so anyone planning to run this game should definitly watch that (except its on snes9x so it would crash later on, but he hadn't reached that spot yet) This is actually a bit shorter than I thought and should be quite less than 2 hours, and it's not a hard game either so a good one for people just looking for a game to TAS =P (*cough* do it *cough*).
Joined: 10/3/2005
Posts: 1332
Well, in the odd chance someone ever attemps to do a TAS of this : use zsnes! snes9x ALWAYS crashes at a certain point of the game (happened to me a few years ago, forgot about it, happened again a few weeks ago... so I tried on zsnes and it worked out well)
I think it might be worth waiting for a stable version of Sne9x 1.5. It might emulate the game better/without crashing. It would be nice to see this game get TASed, though I should think that in a game as unique as this, there would be a couple glitches waiting to be found somewhere, though I haven't had any luck with that myself. Edit: Also, I found this Wikipedia article interesting:
The Drakkhen series' most recognizeable feature is its custom overworld engine. First used by the original Amiga version of Drakkhen, it was later used in the PC and SNES ports. The Dragon View version sports basic terrain shading and mountainlike "boundaries" that enclose areas of the continent. The day/night cycle however is no longer present.
Apparently there are some version differences. Exploitable, perhaps?
Joined: 8/3/2004
Posts: 325
no, it simply means that there was a day/night cycle in the NES games (Drakkhen) but none in the SNES game (Dragon View)... at least that's what I got from it
Joined: 8/3/2004
Posts: 325
Hey, I was wondering if anyone knew of a way to fix this glitch : http://dehacked.2y.net/microstorage.php/info/4604/Dragon%20View%20%28U%29%20%5B%21%5D%20temple%20glitch.smv This game is really fun to play & watch (IMO) but this glitch really screws things up for recording movies (not necessarily for a TAS but I hate using ZSNES to play this game) Is there someway to patch the rerecording version of Snes9x (improv9) to make it so it can emulate that part of the game... there's also a second temple which probably does the same thing but I can't reach it anyways in Snes9x...
Player (33)
Joined: 2/16/2012
Posts: 282
I was investigating this glitch recently. It occurs because of one or more bugs: -At some point after starting the text sequence to load the dragons, it transfers the contents of $7EA98B to $7E00E6 in 8-bit mode. In my experience this value is always 0. It is then blindly decremented until it reaches 0, so the bug forces it to underflow and cause general havoc as it cycles through a lot of values. Forcing it to 04 or any other value via a poke or AR code will allow you to progress, but the graphics will still be messed up on the dragons for a bit. -$7E00E7 is also set to 0x25 at some point and isn't really cleared. The transfer to $7E00E6 is in 8-bit mode but is from the Y register so it bypasses this. The decrement occurs in 16-bit mode, so it wouldn't be farfetched to believe that it was meant to be 0x2500 instead of 0x0000. What is the expected outcome of a store from Y in 8-bit mode? Should it overwrite the high and low bytes or just the low byte of a target address? After playing with it a bit more, I'm pretty certain it's the latter.
Emulator Coder, Skilled player (1141)
Joined: 5/1/2010
Posts: 1217
Can you get a trace of that bug (showing instructions, registers and flag values)? Also, what STY it is (I think there are at least 3)?
Player (33)
Joined: 2/16/2012
Posts: 282
The core problem happens in the following sequence.
9180ac jsl $a0826c   [a0826c] A:0048 X:7f00 Y:0268 S:1fea D:0000 DB:91 nvMxdizc V:242
a0826c phb                    A:0048 X:7f00 Y:0268 S:1fe7 D:0000 DB:91 nvMxdizc V:242
a0826d ldx $e0       [0000e0] A:0048 X:7f00 Y:0268 S:1fe6 D:0000 DB:91 nvMxdizc V:242
a0826f lda $e2       [0000e2] A:0048 X:a98b Y:0268 S:1fe6 D:0000 DB:91 NvMxdizc V:242
a08271 pha                    A:007e X:a98b Y:0268 S:1fe6 D:0000 DB:91 nvMxdizc V:242
a08272 plb                    A:007e X:a98b Y:0268 S:1fe5 D:0000 DB:91 nvMxdizc V:242
a08273 ldy $0000,x   [7ea98b] A:007e X:a98b Y:0268 S:1fe6 D:0000 DB:7e nvMxdizc V:242
a08276 sty $e6       [0000e6] A:007e X:a98b Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a08278 inx                    A:007e X:a98b Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a08279 inx                    A:007e X:a98c Y:0000 S:1fe6 D:0000 DB:7e NvMxdizc V:242
a0827a ldy #$0000             A:007e X:a98d Y:0000 S:1fe6 D:0000 DB:7e NvMxdizc V:242
a0827d lda $0000,x   [7ea98d] A:007e X:a98d Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a08280 sta $02       [000002] A:0000 X:a98d Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a08282 inx                    A:0000 X:a98d Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a08283 lda #$08               A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e NvMxdizc V:242
a08285 sta $03       [000003] A:0008 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdizc V:242
a08287 lsr $02       [000002] A:0008 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdizc V:242
a08289 bcc $82aa     [a082aa] A:0008 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a082aa lda $0000,x   [7ea98e] A:0008 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a082ad and #$0f               A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a082af clc                    A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a082b0 adc #$03               A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdiZc V:242
a082b2 sta $04       [000004] A:0003 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdizc V:242
a082b4 rep #$20               A:0003 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvMxdizc V:242
a082b6 lda $0000,x   [7ea98e] A:0003 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdizc V:242
a082b9 lsr a                  A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdiZc V:242
a082ba lsr a                  A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdiZc V:242
a082bb lsr a                  A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdiZc V:242
a082bc lsr a                  A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdiZc V:242
a082bd inc                    A:0000 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdiZc V:242
a082be sta $00       [000000] A:0001 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdizc V:242
a082c0 inx                    A:0001 X:a98e Y:0000 S:1fe6 D:0000 DB:7e nvmxdizc V:242
a082c1 inx                    A:0001 X:a98f Y:0000 S:1fe6 D:0000 DB:7e Nvmxdizc V:242
a082c2 lda $e3       [0000e3] A:0001 X:a990 Y:0000 S:1fe6 D:0000 DB:7e Nvmxdizc V:242
a082c4 sec                    A:7f80 X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvmxdizc V:242
a082c5 sbc $00       [000000] A:7f80 X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvmxdizC V:242
a082c7 sta $05       [000005] A:7f7f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvmxdizC V:242
a082c9 and #$00ff             A:7f7f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvmxdizC V:242
a082cc sep #$20               A:007f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvmxdizC V:242
a082ce lda $e5       [0000e5] A:007f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d0 sbc #$00               A:007f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d2 sta $07       [000007] A:007f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d4 lda [$05],y   [7f7f7f] A:007f X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d6 sta [$e3],y   [7f7f80] A:0004 X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d8 iny                    A:0004 X:a990 Y:0000 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d9 dec $04       [000004] A:0004 X:a990 Y:0001 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082db bne $82d4     [a082d4] A:0004 X:a990 Y:0001 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d4 lda [$05],y   [7f7f80] A:0004 X:a990 Y:0001 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d6 sta [$e3],y   [7f7f81] A:0004 X:a990 Y:0001 S:1fe6 D:0000 DB:7e nvMxdizC V:242
a082d8 iny                    A:0004 X:a990 Y:0001 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d9 dec $04       [000004] A:0004 X:a990 Y:0002 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082db bne $82d4     [a082d4] A:0004 X:a990 Y:0002 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d4 lda [$05],y   [7f7f81] A:0004 X:a990 Y:0002 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d6 sta [$e3],y   [7f7f82] A:0004 X:a990 Y:0002 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d8 iny                    A:0004 X:a990 Y:0002 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d9 dec $04       [000004] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082db bne $82d4     [a082d4] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a082dd jmp $8292     [a08292] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a08292 rep #$20               A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a08294 dec $e6       [0000e6] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZC V:243
a08296 beq $82a3     [a082a3] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e NvmxdizC V:243
a08298 and #$00ff             A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e NvmxdizC V:243
a0829b sep #$20               A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizC V:243
a0829d dec $03       [000003] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a0829f bne $8287     [a08287] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a08287 lsr $02       [000002] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a08289 bcc $82aa     [a082aa] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZc V:243
a082aa lda $0000,x   [7ea990] A:0004 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZc V:243
a082ad and #$0f               A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZc V:243
a082af clc                    A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZc V:243
a082b0 adc #$03               A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdiZc V:243
a082b2 sta $04       [000004] A:0003 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizc V:243
a082b4 rep #$20               A:0003 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizc V:243
a082b6 lda $0000,x   [7ea990] A:0003 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizc V:243
a082b9 lsr a                  A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZc V:243
a082ba lsr a                  A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZc V:243
a082bb lsr a                  A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZc V:243
a082bc lsr a                  A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZc V:243
a082bd inc                    A:0000 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdiZc V:243
a082be sta $00       [000000] A:0001 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizc V:243
a082c0 inx                    A:0001 X:a990 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizc V:243
a082c1 inx                    A:0001 X:a991 Y:0003 S:1fe6 D:0000 DB:7e Nvmxdizc V:243
a082c2 lda $e3       [0000e3] A:0001 X:a992 Y:0003 S:1fe6 D:0000 DB:7e Nvmxdizc V:243
a082c4 sec                    A:7f80 X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizc V:243
a082c5 sbc $00       [000000] A:7f80 X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizC V:243
a082c7 sta $05       [000005] A:7f7f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizC V:243
a082c9 and #$00ff             A:7f7f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizC V:243
a082cc sep #$20               A:007f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvmxdizC V:243
a082ce lda $e5       [0000e5] A:007f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d0 sbc #$00               A:007f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d2 sta $07       [000007] A:007f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d4 lda [$05],y   [7f7f82] A:007f X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d6 sta [$e3],y   [7f7f83] A:0004 X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d8 iny                    A:0004 X:a992 Y:0003 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d9 dec $04       [000004] A:0004 X:a992 Y:0004 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082db bne $82d4     [a082d4] A:0004 X:a992 Y:0004 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d4 lda [$05],y   [7f7f83] A:0004 X:a992 Y:0004 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d6 sta [$e3],y   [7f7f84] A:0004 X:a992 Y:0004 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d8 iny                    A:0004 X:a992 Y:0004 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d9 dec $04       [000004] A:0004 X:a992 Y:0005 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082db bne $82d4     [a082d4] A:0004 X:a992 Y:0005 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d4 lda [$05],y   [7f7f84] A:0004 X:a992 Y:0005 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d6 sta [$e3],y   [7f7f85] A:0004 X:a992 Y:0005 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d8 iny                    A:0004 X:a992 Y:0005 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082d9 dec $04       [000004] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:243
a082db bne $82d4     [a082d4] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a082dd jmp $8292     [a08292] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a08292 rep #$20               A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZC V:243
a08294 dec $e6       [0000e6] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZC V:243
a08296 beq $82a3     [a082a3] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e NvmxdizC V:244
a08298 and #$00ff             A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e NvmxdizC V:244
a0829b sep #$20               A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizC V:244
a0829d dec $03       [000003] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a0829f bne $8287     [a08287] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a08287 lsr $02       [000002] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a08289 bcc $82aa     [a082aa] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZc V:244
a082aa lda $0000,x   [7ea992] A:0004 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZc V:244
a082ad and #$0f               A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZc V:244
a082af clc                    A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZc V:244
a082b0 adc #$03               A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdiZc V:244
a082b2 sta $04       [000004] A:0003 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizc V:244
a082b4 rep #$20               A:0003 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizc V:244
a082b6 lda $0000,x   [7ea992] A:0003 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizc V:244
a082b9 lsr a                  A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZc V:244
a082ba lsr a                  A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZc V:244
a082bb lsr a                  A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZc V:244
a082bc lsr a                  A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZc V:244
a082bd inc                    A:0000 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdiZc V:244
a082be sta $00       [000000] A:0001 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizc V:244
a082c0 inx                    A:0001 X:a992 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizc V:244
a082c1 inx                    A:0001 X:a993 Y:0006 S:1fe6 D:0000 DB:7e Nvmxdizc V:244
a082c2 lda $e3       [0000e3] A:0001 X:a994 Y:0006 S:1fe6 D:0000 DB:7e Nvmxdizc V:244
a082c4 sec                    A:7f80 X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizc V:244
a082c5 sbc $00       [000000] A:7f80 X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizC V:244
a082c7 sta $05       [000005] A:7f7f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizC V:244
a082c9 and #$00ff             A:7f7f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizC V:244
a082cc sep #$20               A:007f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvmxdizC V:244
a082ce lda $e5       [0000e5] A:007f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d0 sbc #$00               A:007f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d2 sta $07       [000007] A:007f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d4 lda [$05],y   [7f7f85] A:007f X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d6 sta [$e3],y   [7f7f86] A:0004 X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d8 iny                    A:0004 X:a994 Y:0006 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d9 dec $04       [000004] A:0004 X:a994 Y:0007 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082db bne $82d4     [a082d4] A:0004 X:a994 Y:0007 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d4 lda [$05],y   [7f7f86] A:0004 X:a994 Y:0007 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d6 sta [$e3],y   [7f7f87] A:0004 X:a994 Y:0007 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d8 iny                    A:0004 X:a994 Y:0007 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d9 dec $04       [000004] A:0004 X:a994 Y:0008 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082db bne $82d4     [a082d4] A:0004 X:a994 Y:0008 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d4 lda [$05],y   [7f7f87] A:0004 X:a994 Y:0008 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d6 sta [$e3],y   [7f7f88] A:0004 X:a994 Y:0008 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d8 iny                    A:0004 X:a994 Y:0008 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082d9 dec $04       [000004] A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e nvMxdizC V:244
a082db bne $82d4     [a082d4] A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e nvMxdiZC V:244
a082dd jmp $8292     [a08292] A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e nvMxdiZC V:244
a08292 rep #$20               A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e nvMxdiZC V:244
a08294 dec $e6       [0000e6] A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e nvmxdiZC V:244
a08296 beq $82a3     [a082a3] A:0004 X:a994 Y:0009 S:1fe6 D:0000 DB:7e NvmxdizC V:244
This continues until $E6 finally hits 0 again, but a multitude of addresses are overwritten with junk along the way. I cannot find an instance when $7EA98B is ever set in normal gameplay, but $E7 is set prior to starting the sequence:
a2804e rep #$20               A:0000 X:ffff Y:000a S:1fe5 D:0000 DB:91 nvMxdizc V:242
a28050 lda [$e0],y   [aaf712] A:0000 X:ffff Y:000a S:1fe5 D:0000 DB:91 nvmxdizc V:242
a28052 sta $e7       [0000e7] A:0125 X:ffff Y:000a S:1fe5 D:0000 DB:91 nvmxdizc V:242
a28054 iny                    A:0125 X:ffff Y:000a S:1fe5 D:0000 DB:91 nvmxdizc V:242
a28055 iny                    A:0125 X:ffff Y:000b S:1fe5 D:0000 DB:91 nvmxdizc V:242
a28056 rep #$20               A:0125 X:ffff Y:000c S:1fe5 D:0000 DB:91 nvmxdizc V:242
a28058 and #$00ff             A:0125 X:ffff Y:000c S:1fe5 D:0000 DB:91 nvmxdizc V:242
a2805b sep #$20               A:0025 X:ffff Y:000c S:1fe5 D:0000 DB:91 nvmxdizc V:242
a2805d ldx $e7       [0000e7] A:0025 X:ffff Y:000c S:1fe5 D:0000 DB:91 nvMxdizc V:242
a2805f inx                    A:0025 X:0125 Y:000c S:1fe5 D:0000 DB:91 nvMxdizc V:242
a28060 stx $f7       [0000f7] A:0025 X:0126 Y:000c S:1fe5 D:0000 DB:91 nvMxdizc V:242
Emulator Coder, Skilled player (1141)
Joined: 5/1/2010
Posts: 1217
Looking at the traces, x flag is clear (and e flag is not shown, but I presume clear) so sty $e6 should store 16 bits. Hmm...
Player (33)
Joined: 2/16/2012
Posts: 282
That is correct. It is working according to the status register, but unless it misses setting the flag elsewhere I don't know why it would break down like this. If we had an emulator that could get past this point, we could figure out what's messing up but AFAIK the only one that doesn't crash is zsnes.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2174
Location: A little to the left of nowhere (Sweden)
Have you tried to see if this happens in the latest version of bsnes (Higan)? (grab from www.byuu.org) If this happens there too but not on console, then you have found a valid bug in the bsnes core and if reported byuu will most likely fix it if you describe the problem clearly enough. And hopefully the fix can then be back-ported into BizHawk.
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
Byuu will want a 10-page report and a picture of you playing it on real hardware, along with a video of you playing it on real hardware, and a video capturing that before he'll accept a bug report.
I think.....therefore I am not Barry Burton
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2174
Location: A little to the left of nowhere (Sweden)
I've seen less detailed bug reports get accepted and fixed. (And I mean in recent times).
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
I don't make the ridiculous requirements, byuu does :p
I think.....therefore I am not Barry Burton
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Pasky13 wrote:
Byuu will want a 10-page report and a picture of you playing it on real hardware, along with a video of you playing it on real hardware, and a video capturing that before he'll accept a bug report.
I don't think he's that extreme.
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
creaothceann wrote:
Pasky13 wrote:
Byuu will want a 10-page report and a picture of you playing it on real hardware, along with a video of you playing it on real hardware, and a video capturing that before he'll accept a bug report.
I don't think he's that extreme.
I was being rather silly, but his requirements are quite silly compared to other emulators. Anyways, I don't want to derail this topic any further.
I think.....therefore I am not Barry Burton
Player (33)
Joined: 2/16/2012
Posts: 282
We've resolved the issue. Turns out to be a case of very poor programming on the game's part. The issue isn't with emulation, but rather lazy status flags or clearing during other parts of the game. As far as we know now though, the bug makes it impossible to clear the game without resetting. The core address at fault is $7E9BA9. It looks like the lower byte is normally used to describe certain events or character actions (such as room transitions). The high byte is typically 00; however at some point in the game (we haven't found where yet) it gets used and ends up as 7F. When the game begins the cutscene, it takes the full 16-bit value at $7E9BA9 to index into some other tables, despite only forcing the low byte to be 0x10. The scene works fine if you reset the game and load a save since that entire address is cleared and thus it doesn't blow up. We're still working to find out what specific events change the high byte. Of other significance: this same glitch can be abused to wrong warp to the end credits and cut off a significant portion of the run. So understanding how to make it work could lead to a pretty decent TAS. Thanks for your attention to this!
Patashu
He/Him
Joined: 10/2/2005
Posts: 4016
Has the bug been reproduced on console?
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
Player (33)
Joined: 2/16/2012
Posts: 282
Yes. PJ has started doing routing/attempts for SS and ran into this on emu first, and then it has now occurred twice on console. I can only think they never expected people to complete the game in one sitting. We first figured that it was an emu thing since there are pretty ancient reports of the same bug occurring, but turns out that this bug only occurs when the player never saves and quits/reloads.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4016
One more question, why doesn't ZSNES crash there?
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
Player (33)
Joined: 2/16/2012
Posts: 282
No clue. I based that side on reports from here and GFAQs; I don't have any zsnes saves or savestates at that point in the game. The bug may have been shortcut'd away. If they weren't keeping strict track of register/operation size, it is possible that it skips over the bug completely.
PJ
He/Him
Joined: 2/1/2011
Posts: 181
Location: Western NY
I can't speak for others but I know why it worked on ZSNES for me. I made a save at Miraj (the town before this temple) in SNES9x, transferred the save to ZSNES, got through the temple, and then saved at the next soonest point so I could use SNES9x again. It wasn't a fresh file for me. I loaded the old save file. That's why it seemed so odd. It didn't work on SNES9x because I never save/loaded, but the same exact file worked on ZSNES because I loaded. Really silly.
Player (33)
Joined: 2/16/2012
Posts: 282
Documenting this here just so it exists somewhere: The high byte to 7E9BA9 is set to 7F for a very brief time after you kill Piercia (scorpion boss). The low byte is restored to 00, but the high byte is not touched and is apparently never used again until this scene. At the very least, we haven't found a way to change it. In regards to the wrong warp, we've determined that the button combinations and current state of 7EBB37 (1 byte) will determine the outcome. I haven't tested many of the button combinations yet, but I've mapped out what advancing past the text with B does for the following values of 7EBB37: 00 - diagonal orange/laugh 01 - diagonal orange 02 - diagonal orange 03 - diagonal orange 04 - DO 05 - WW 06 - Vert Orange 07 - reset 08 - reset 09 - WW 0A - reset 0B - WW 0C - WW 0D - DO 0E - flashy 0F - WW 10 - WW 11 - WW 12 - WW 13 - WW 14 - WW 15 - reset 16 - flashy 17 - diagonal orange Anything not marked WW is a crash. These values describe the outcome if you start holding B for 2 frames when the given value is in $BB37. I do not know why this is the case, but it seems to be fairly consistent. Oddly enough, $BB37 controls the lights flickering.