It turns out the infamous "Pokemon ripoff" has ACE as well, just like Pokemon.

Game objectives

  • Emulator used: BizHawk 2.5, GB player
  • <List the objectives of your movie here>
  • <Another objective>
  • <And so on>

Comments

I always knew this game could have a game end glitch, but wasn't able to figure out how it worked. After some guidance from CasualPokePlayer, I managed to discover that various NPC ID combinations jump to various parts of the game's memory, leading to crashes. The gameboy player was used, since the previous run relied on an emulator bug regarding STOP (opcode #10 10), so I wanted the run to have a chance to get console verified one day.
While CasualPokePlayer and Mister Chess did not contribute to the input directly, I made them coauthors since they were very helpful in finding out how the NPCs glitched up, while CasualPokePlayer also gave a payload to jump to the controller directly (which unfortunately ended up unused) along with where to jump to.

Map bug

This is the main bug in all iterations of the any% Telefang TAS. When you do the following actions: 1. Open the map with Start 2. Entering a building 3. Trigger a battle
the game writes the bytes for you and the NPCs from WRAM to CartRAM, one byte at a time. Onc the battle is over, or when you close the map, the values are written back to WRAM. Given enough lag however, the game fails to write all the addresses. In the case for this run:
5F47:  1A        LD   A,(DE)         A:a3 B:00 C:a3 D:c2 E:fd F:00 H:a2 L:5d LY:37 SP:dff3  Cy:1320480764
5F48:  22        LD   (HL+),A        A:00 B:00 C:a3 D:c2 E:fd F:00 H:a2 L:5d LY:37 SP:dff3  Cy:1320480772
5F49:  13        INC  DE             A:00 B:00 C:a3 D:c2 E:fd F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480780
5F4A:  0B        DEC  BC             A:00 B:00 C:a3 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480788
5F4B:  78        LD   A,B            A:00 B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480796
5F4C:  B1        OR   C              A:00 B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480800
5F4D:  20 F8     JR   NZ,5F47h       A:a2 B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480804
5F47:  1A        LD   A,(DE)         A:a2 B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480816
5F48:  22        LD   (HL+),A        A:db B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5e LY:37 SP:dff3  Cy:1320480824
5F49:  13        INC  DE             A:db B:00 C:a2 D:c2 E:fe F:00 H:a2 L:5f LY:37 SP:dff3  Cy:1320480832
0040:  C3 E7 02  JP   #02E7h         A:db B:00 C:a2 D:c2 E:ff F:00 H:a2 L:5f LY:90 SP:dff1  Cy:1320480860
The process took too long, so it gets interrupted. The reason I call it map bug however, is because that's the only action you can use to trigger this. There's no area where you can trigger either a battle, or enter a room with tons of lag.
While this might seem to indicate you only need lag, I have never managed to trigger this bug without the phone ringing. The phone only rings once every 5 minutes when you have at least 2 Denjuu, so I'm forced to wait 5 minutes.
The very first Telefang TAS took advantage of the game failing to copy my game position to get to the final dungeon. The subsequent TASes uses this bug to get glitched combinations of NPC values to jump to WRAM.

NPCs

The following NPCs are reachable within the first 5 minutes of the game, while also reachable to each other without triggering combat.
Map IDMap CoordNPC 1NPC 2
420376
41920775
41921975
41120773
41921973
41100
41816775
4410472
26021070
25917070
The addresses for their IDs are: 0xC2BE, 0xC2BF 0xC2DE, 0xC2DF 0xC2FE, 0xC2FF 0xC31E, 0xC31F 0xC33E, 0xC33F
There are more, but these are the ones the above uses. Not every one of them can be mixed together with the map bug. Moving around map coordinates change the address the NPC is on, but since the maps are connected, some only get written to specific addresses. For instance: You start at Map 4, Coord 19. You can only go north and east. The values right now are:
0xC2BE, 0xC2BF = 207, 75
0xC2DE, 0xC2DF = 219, 75
0xC2FE, 0xC2FF = 0,0 
0xC31E, 0xC31F = 0,0 
0xC33E, 0xC33F = 0,0 
Going east gives
0xC2BE, 0xC2BF = 207, 75
0xC2DE, 0xC2DF = 219, 75
0xC2FE, 0xC2FF = 3,76 
0xC31E, 0xC31F = 0,0 
0xC33E, 0xC33F = 0,0 
Backtracking, then going north gives
0xC2BE, 0xC2BF = 207, 75
0xC2DE, 0xC2DF = 219, 75
0xC2FE, 0xC2FF = 207, 73 
0xC31E, 0xC31F = 219, 73 
0xC33E, 0xC33F = 0,0 
As you can see, the IDs: 3, 76 got overwritten. Attempting to reload the NPC only places them to 0xC2BE, 0xC2BF. This means there's no way to get addresses
0xC2DE, 0xC2DF, 
0xC31E, 0xC31F,
0xC33E, 0xC33F
to have the values of 3, 76.
Similarrly, there's no way to get the values of 3, 76 to be at 0xC2BE, 0xC2BF. This restricts me to only 1 room possible for the bug.
Possible values for 0xC2BE, 0xC2BF
0, 0 (By resetting)
3, 76
104, 72
167, 75
170, 70
207, 73
207, 75
Possible values for 0xC2DE, 0xC2DF
0, 0
207, 75
210, 70
219, 73
219, 75
Possible values for 0xC2FE, 0xC2FF
0, 0
3, 76
207, 73
219, 75
Possible values for 0xC31E, 0xC31F
0, 0 (By resetting)
207, 75
219, 73

Collision effects

If 2 NPC IDs can exist at the same pair of addresses, it's possible to get a combination of them using the map bug. The following collisions are possible:
3, 0 -> The NPC starts floating up and down. They cannot be talked to.
3, 70 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 60 80 (JP NZ, #8060h). The game then crashes at 0x8061 via 0xFD
3, 72 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 60 80 (JP NZ, #8060h). The game then crashes at 0x8061 via 0xFD
3, 73 -> Jumps to 0xFF7F, then gets stuck in a loop of 0x0038, 0x0039, 0x003A, 0x003B, 0xFF7F
3, 75 -> Nothing wrong; this is a valid NPC
3, 76 -> Nothing wrong; this is a valid NPC
104, 0 -> Glitches the graphics and lags the game badly.
104, 70 -> They become a Denjuu trainer with a level 0 Tsunonasu
104, 72 -> Nothing wrong; this is a valid NPC
104, 73 -> Spins around in circles
104, 75 -> Crashes at 0x47DA due to 0xE4
104, 76 -> Jumps to 0xFF7F, then gets stuck in a loop of 0x0038, 0x0039, 0x003A, 0x003B, 0xFF7F
167, 0 -> Jumps to 0x8BFA via 0xE9 JP (HL) at 0x4D47. This is the graphics for the store's "money" interface. Eventually, the game crashes at 0x8C62 due to 0x10 10 STOP #10h at 0x8C62.
167, 70 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 00 (JP NZ, #0000h). The game then resets with a blue tint.
167, 72 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 00 (JP NZ, #0000h). The game then resets with a blue tint.
167, 73 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 00 (JP NZ, #0000h). The game then resets with a blue tint.
167, 75 -> Nothing wrong; this is a valid NPC
167, 76 -> Jumps to 0x84FA via 0xE9 JP (HL) at 0x4EFB, then crashes 1 instruction later by 0xFC
170, 0 -> Jumps to 0x8AFA via 0xE9 JP (HL) at 0x4EFB, then crashes due to 0xF4
170, 70 -> Nothing wrong; this is a valid NPC
170, 72 -> Nothing wrong; this is a valid NPC
170, 73 -> Makes the NPC run in place. Talkng to them triggers a fight with trainer with 3 Denjuu at level 10
170, 75 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 80 (JP NZ, #8000h). The game then crashes at 0x8076 via 0xE3
170, 76 -> Jumps to 0x8BFA via 0xE9 JP (HL) at 0x4D47. This is the graphics for the store's "money" interface. Eventually, the game crashes at 0x8C62 due to 0x10 10 STOP #10h at 0x8C62. While the values earlier can be slightly manipulated by having different amounts of money, the sequence 0x10 10 is from the character "ル", which is unavoidable. The currently published TAS emulates the instruction wrong by simply ignoring it. Therefore, the currently published route using this combination is impossible.
207, 0 -> Jumps to 0x8AFA via 0xE9 JP (HL) at 0x4EFB, then eventually jumps to 0xFAFA via 0xE9 JP (HL) at 0x049D before jumping to 0x0000 via 0xE9 JP (HL) at 0xFD12. It gets stuck in a loop at 0x0028 to 0x0030.
207, 70 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 80 (JP NZ, #8000h). The game then crashes at 0x8076 via 0xE3
207, 72 -> Nothing wrong; this is a valid NPC
207, 73 -> Nothing wrong; this is a valid NPC
207, 75 -> Nothing wrong; this is a valid NPC
207, 76 -> Jumps to 0x8005 via 0xD9 RETI at 0x0323. It then crashes at 0x8059 via 0xFC.
210, 0 -> The NPC becomes untalkable
210, 70 -> Nothing wrong; this is a valid NPC
210, 73 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 80 (JP NZ, #8000h). The game then crashes at 0x8076 via 0xE3
210, 75 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 60 80 (JP NZ, #8060h). The game then crashes at 0x8061 via 0xFD
219, 0 -> Jumps to 0x0000 via 0xE9 JP (HL) at 0x049D, then gets stuck in a loop from 0x0028 to 0x0030.
219, 70 -> Jumps to 0xC98B via 0xE9 JP (HL) at 0x4EFB, then immediately jumps to 0x0000 due to C2 00 00 (JP NZ, #0000h). It then gets stuck in a loop from 0x0028 to 0x0030.
219, 73 -> Nothing wrong; this is a valid NPC
219, 75 -> Nothing wrong; this is a valid NPC
219, 76 -> Jumps to 0xC6C9 via 0xE9 JP (HL) at 0x4EFB, then NOP slides to player data at 0xC900
Based on the above, the only useable combination is 219, 76.

Player data

Now that we have a way to jump into player data, we need to document what is possible. 0xC800 region gets set much much later in the game, so for the purpose of the run, everything from 0xC6C9 to 0xC8FF is 0.
All values are in hex:
AddressPurposeValues possible during runOpcode
C900Defaults to 1. Setting to 0 takes me back to start of game human world. 2 makes me fall from sky. Changing from 1 disables menus.1LD BC, 5048
C901Spawn X (where you appear on room load) + X pos on phone use09-98
C902Spawn Y (where you appear on room load) + Y pos on phone use10-80
C903Acre93SUB E
C904Map ID04INC B
C905Map type00NOP
C906Map Coord13INC DE
C907??02NOP
C908??00NOP
C909??00NOP
C90A??00NOP
C90B??00NOP
C90C??00NOP
C90D??00NOP
C90E??00NOP
C90FLast visited map coord0B, 14DEC BC
AddressPurposeValues possible during runOpcode
C910Money00-FFVaries
C911Money0-4*Varies
C912Follower sprite IDVaries*Varies
C913Map Coord13INC DE
C914Map type04INC B
C915Ranges from 0-9 as you go left to right screen2-9Varies
C916Ranges from 0-7 as you go up to down the screen0-7Varies
C917Music? Overworld is 303INC (BC)
C918??00NOP
C9191 if walking. else 00NOP
C91AIdle timer0NOP
C91B??00NOP
C91C??00NOP
C91DChange to 1 to trigger battle0NOP
C91ESet to E0 at start. Changes to F0 in battleE0LD (FF00 + C0), A
C91FSet to C0 at start. Changing it affects textC0
AddressPurposeValues possible during runOpcode
C920Randomly assigned on startVaries**Varies
C921Randomly assigned on startVaries**Varies
C922Goes up on grass00-3FVaries
C923Randomly changes??Varies
C924??05DEC B
C925??00NOP
C926Map ID04INC B
C927Map Coord13INC DE
C928Spawn X (where you appear on room load) + X pos on phone use09-98Varies
C929Spawn Y (where you appear on room load) + Y pos on phone use10-80Varies
C92A??00NOP
C92B??00NOP
C92CPlayer Name Character 1CDCall 3D6A
C92DPlayer Name Character 26A
C92EPlayer Name Character 33D
C92FPlayer Name Character 421LD HL, 5903
AddressPurposeValues possible during runOpcode
C930Player Name Character 503LD HL, 5903
C931Player Name Character 659
C932Player Name Character 729ADD HL, HL
C933Player Name Character 8E0LD (FF00 + E0), A
C934Player Name String TerminatorE0
C935??00NOP
C936Sets to 1 at game start01LD BC, 1101
C937Sets to 1 after intro cutscene01
C938Frame00-FF
C9C9Seconds04INC B
C9CAMinutes05DEC B
C9CBHours00NOP
C9CC??00NOP
C9CD??00NOP
C9CESets to 1 at game start01LD BC, 0500
C9CF??00
AddressPurposeValues possible during runOpcode
C940Decrements from 5?05LD BC, 0500
C941??00NOP
C942??00NOP
C943Randomly assigned on startVaries**Varies
C944??00NOP
C945??01LD BC, 0000
C946Shop item you picked up00
C947Using phone bool00
C948Follower X pos on phone use00-FFVaries
C949Follower X pos on phone use00-FFVaries
C94AFollower Y pos on phone use00-FFVaries
C94BFollower Y pos on phone use00-FFVaries
C94CTurned to 1 at 1st screen of Denjuu World?00NOP
C94DCalling Denjuu nameVariesVaries
C94ECalling Denjuu name? Seems to be A0VariesVaries
C94FPhone timerVariesVaries

*Values for C912

ValueDenjuuOpcode
00TsunonasuNOP
01KochiaLD BC, _ _ _ _
02OsheLD (BC) A
03Keshi*INC (BC)
04Crypto*INC B
05MonsteraDEC B
06FungusLD B, _ _
2FMusaCPL
36HagumanokiLD (HL), _ _
64HiyuLD H, H
67GamuruLD H, A
69GaultheriaLD L, C
6BKayaLD L, E
6CDenfareLD L, H
82BeebalmADD D
83SalalADD E
84EnishidaADD H
92RuscusSUB D
94ZeaSUB H
A5KanzouAND L
A6OrnithogalumAND (HL)
  • Power version only

**Values for C920, C921, C943

The following are all the 256 possible combinations of the values for C920, C921, C943
C920OpcodeC921OpcodeC943Opcode
89ADC CE5PUSH HLA2AND D
A9XOR C98SBC BADXOR L
8CADC H65LD H, LACXOR H
E4INVALID5DLD E, L35DEC (HL)
32LDD (HL), A8EADC (HL)ABXOR E
BFCP A3FCCF5ALD E, D
EDINVALID25DEC H35DEC (HL)
78LD A, BB1OR C57LD D, A
D9RETI3DDEC AAFXOR A
E0LD (FF00 + 83), A83 1ELD E, _ _
83ADD E09ADD HL, BC76HALT
68LD L, BACXOR HB0OR B
FDINVALID07RLCA8FADC A
B7OR ACDCALL _ _ _ _7ALD A, D
40LD B, B8DADC L19ADD HL,DE
FBEIF1POP AF32LDD (HL), A
C2JP NZ, _ _ 8E8E 28JR Z, _ _
A7AND AB8CP BC6ADD A, _ _
9BSBC EF7RST 3037SCF
66LD H, (HL)A5AND L8CADC H
42LD B, D1DDEC E92SUB D
9CSBC HF6OR A, _ _6ELD L, (HL)
A3AND EFBEIA8XOR B
D2JP NC, _ _ 9999 28JR Z, _ _
D7RST 105DLD E, L02LD (BC) A
7ELD A, (HL)CFRST 0897SUB A
91SUB C99SBC C65LD H, L
7ALD A, D0ALD A, (BC)45LD B, L
67LD H, A87ADD A4BLD C, E
18JR 2F2F 68LD L, B
89ADC C2CINC L00NOP
2FCPL55LD D, L15DEC D
D6SUB A, 6D6D 0ELD C, _ _
E5PUSH HL7BLD A, E25DEC H
9CSBC HFBEI95SUB L
A5AND L7FLD A, A28JR Z, _ _
E1POP HL18JR _ _B2OR D
1ALD A,(DE)A3AND E97SUB A
F0LD A, (FF00 + C0)C0 1ELD E, _ _
C3JP _ _ 2E2E 88ADC B
DFRST 18B4OR H86ADD (HL)
96SUB (HL)86ADD (HL)42LD B, D
76HALTB8CP B9BSBC E
01LD BC, _ _ 1616 B1OR C
29ADD HL, HL61LD H, C64LD H, H
16LD D, BEBE A0AND B
15DEC D79LD A, C18JR _ _
E3INVALIDF4INVALID2ELD L, _ _
B8CP B45LD B, LB2OR D
AEXOR (HL)CFRST 085ALD E, D
7FLD A, ACEADC A, _ _5DLD E, L
3BDEC SPF3DIB3OR E
57LD D, A3CINC A6CLD L, H
D8RET C59LD E, C08LD (_ _ _ _), SP
73LD (HL), E56LD D, (HL)6CLD L, H
DESBC A, D8D8 58LD E, B
D0RET NCAAXOR D45LD B, L
18JR 3F3F 99SBC C
27DAABBCP E4BLD C, E
7ELD A, (HL)D0RET NCB0OR B
5CLD E, H86ADD (HL)73LD (HL), E
A9XOR C26LD H, _ _3BDEC SP
F6OR A, 5656 84ADD H
DAJP N, _ _ 0404 34INC (HL)
D1POP DEABXOR EA0AND B
9ASBC D27DAA9CSBC H
F2LD A, (FF00 + C)D8RET C23INC HL
7FLD A, A54LD D, H4CLD C, H
8CADC HD1POP DE0ALD A, (BC)
95SUB L34INC (HL)52LD D, D
A9XOR C93SUB E2CINC L
DDINVALIDD3INVALID0DDEC C
40LD B, B97SUB A6FLD L, A
89ADC C6BLD L, E78LD A, B
70LD (HL), BC8RET Z30JR NC, _ _
59LD E, C3BDEC SPB7OR A
F3DICDCALL _ _ _ _1ELD E, _ _
1DDEC EDFRST 1823INC HL
E8ADD SP, 7575 73LD (HL), E
D5PUSH DEC2JP NZ, _ _ _ _96SUB (HL)
11LD DE, _ _ 6464 8FADC A
98SBC B47LD B, AB4OR H
75LD (HL), LC8RET ZA7AND A
64LD H, H64LD H, H37SCF
35DEC (HL)5DLD E, L8CADC H
FALD A, (_ _ 08)08 C3JP _ _ _ _
14INC D89ADC C23INC HL
C7RST 0087ADD A8EADC (HL)
4ELD C, (HL)B6OR (HL)86ADD (HL)
94SUB HD6SUB A, _ _B2OR D
4BLD C, E88ADC B1ELD E, _ _
7ELD A, (HL)D0RET NCB0OR B
89ADC C02LD (BC) A30JR NC, _ _
8CADC H99SBC C97SUB A
FDINVALIDE6AND A, _ _63LD H, E
52LD D, D68LD L, B7ALD A, D
4DLD C, LC6ADD A, _ _92SUB D
B6OR (HL)4CLD C, H85ADD L
8CADC HE1POP HL68LD L, B
63LD H, E9BSBC E2FCPL
52LD D, DA5AND L39ADD HL, SP
B3OR E73LD (HL), E18JR _ _
04INC BEDINVALID43LD B, E
70LD (HL), B32LDD (HL), ABCCP H
89ADC CA4AND H34INC (HL)
9DSBC LF2LD A, (FF00 + C)9CSBC H
15DEC D3BDEC SP76HALT
71LD (HL), CB3OR E44LD B, H
E4INVALIDEFRST 2873LD (HL), E
15DEC DF3DI0FRRCA
8BADC EE2LD (FF00 + C), A9CSBC H
D4CALL NZ, _ _ 8383 1CINC E
8FADC A85ADD L58LD E, B
FCINVALIDB5OR L08LD (_ _ _ _), SP
7ALD A, D57LD D, A64LD H, H
51LD D, C0BDEC BC15DEC D
5BLD E, E03INC (BC)1DDEC E
EEXOR A, 9F9F 6CLD L, H
14INC D66LD H, (HL)99SBC C
C3JP _ _ C7C7 BFCP A
D9RETI15DEC D0ALD A, (BC)
B2OR D86ADD (HL)A5AND L
02LD (BC) A94SUB H5DLD E, L
F2LD A, (FF00 + C)6DLD L, LA9XOR C
B6OR (HL)9ASBC D88ADC B
2ELD L, 2020 37SCF
7BLD A, E40LD B, B74LD (HL), H
DFRST 18B2OR D14INC D
C1POP BC17RLA49LD C, C
61LD H, C68LD L, B42LD B, D
9CSBC HE8ADD SP, _ _A1AND C
0ELD C, 4545 0FRRCA
20JR NZ, 5858 B5OR L
36LD (HL), 4444 7FLD A, A
84ADD H7CLD A, H3ELD A, _ _
28JR Z, 1818 34INC (HL)
BBCP E43LD B, E54LD D, H
45LD B, LD9RETI6FLD L, A
83ADD EF5PUSH AF56LD D, (HL)
20JR NZ, 7C7C 51LD D, C
96SUB (HL)3BDEC SP97SUB A
12LD (DE), A 8FADC AB3OR E
A4AND HE3INVALID6ALD L, D
74LD (HL), H45LD B, L7ELD A, (HL)
C1POP BCB5OR L43LD B, E
6FLD L, A87ADD A5ALD E, D
14INC D4BLD C, E83ADD E
A8XOR BCDCALL _ _ _ _73LD (HL), E
A9XOR CC7RST 00BBCP E
11LD DE, _ _ 0F0F 0CINC C
8AADC DF2LD A, (FF00 + C)A8XOR B
83ADD EF5PUSH AF78LD A, B
B9CP C63LD H, E6DLD L, L
33INC SP59LD E, C8EADC (HL)
73LD (HL), E8EADC (HL)A3AND E
F2LD A, (FF00 + C)6DLD L, LA9XOR C
2DDEC L87ADD A14INC D
BDCP L6DLD L, L2FCPL
F8LD HL, SP + 7F7F 83ADD E
ECINVALID4DLD C, L54LD D, H
D7RST 10DESBC A, _ _B6OR (HL)
83ADD E12LD (DE), A 0CINC C
CDCALL _ _ FCFC 89ADC C
74LD (HL), H7ELD A, (HL)34INC (HL)
C8RET Z1FRRA05DEC B
DCCALL C, _ _ 3F3F 76HALT
7ALD A, D50LD D, B81ADD C
D5PUSH DE54LD D, H72LD (HL), D
B1OR CAAXOR DC5PUSH BC
24INC H7ELD A, (HL)7FLD A, A
1FRRABCCP H50LD D, B
58LD E, B31LD SP, _ _ _ _AAXOR D
CFRST 08C7RST 0084ADD H
BECP (HL)C2JP NZ, _ _ _ _55LD D, L
16LD D, EAEA C0RET NZ
ABXOR EC3JP _ _ _ _7CLD A, H
D7RST 104BLD C, E55LD D, L
ADXOR LF6OR A, _ _76HALT
20JR NZ, 2C2C A3AND E
FFRST 389CSBC HC1POP BC
4BLD C, E7ELD A, (HL)8DADC L
13INC DE79LD A, C18JR _ _
E0LD (FF00 + 4C), A4C 45LD B, L
8FADC A35DEC (HL)AAXOR D
83ADD E05DEC B7FLD A, A
B6OR (HL)5DLD E, L57LD D, A
C2JP NZ, _ _ 6565 06LD B, _ _
DFRST 18C2JP NZ, _ _ _ _39ADD HL, SP
8CADC HFECP A, _ _84ADD H
6CLD L, HF0LD A, (FF00 + _ _)79LD A, C
15DEC D51LD D, C39ADD HL, SP
44LD B, H1ELD E, _ _38JR C, _ _
B2OR DA5AND L37SCF
B9CP C2DDEC L31LD SP, _ _ _ _
46LD B, (HL)D8RET C5CLD E, H
7ELD A, (HL)E2LD (FF00 + C), A68LD L, B
DCCALL C, _ _ 7B7B 2DDEC L
03INC (BC)1ALD A,(DE)1FRRA
F8LD HL, SP + 3737 A2AND D
CBRLC BADXOR L25DEC H
69LD L, C9FSBC A61LD H, C
20JR NZ, B2B2 74LD (HL), H
F9LD, SP, HL68LD L, B93SUB E
54LD D, H65LD H, L15DEC D
89ADC C3BDEC SP88ADC B
86ADD (HL)F9LD, SP, HL1BDEC DE
FDINVALID10STOP _ _B9CP C
51LD D, CABXOR E27DAA
D2JP NC, _ _ 9898 54LD D, H
B7OR A4DLD C, L4ALD C, D
F0LD A, (FF00 + B1)B1 2CINC L
D3INVALID38JR C, _ _02LD (BC) A
12LD (DE), A A5AND L7CLD A, H
BFCP A90SUB BC4CALL NZ, _ _ _ _
F5PUSH AFAFXOR AA7AND A
6ELD L, (HL)DDINVALID88ADC B
67LD H, ABFCP A7ALD A, D
3DDEC ADAJP N, _ _ _ _5BLD E, E
98SBC B2ELD L, _ _ABXOR E
DFRST 18C2JP NZ, _ _ _ _39ADD HL, SP
58LD E, B22LDI (HL), AA1AND C
13INC DE70LD (HL), B93SUB E
A6AND (HL)CBRLC B84ADD H
EALD (_ _ 0C), A0C BACP D
32LDD (HL), AD2JP NC, _ _ _ _B2OR D
30JR NC, 2828 48LD C, B
8BADC E19ADD HL,DE91SUB C
64LD H, H64LD H, H07RLCA
53LD D, E17RLA1CINC E
7FLD A, AACXOR H28JR Z, _ _
14INC D61LD H, C45LD B, L
20JR NZ, 9898 97SUB A
D6SUB A, 4A4A C0RET NZ
A8XOR B88ADC B93SUB E
50LD D, BA2AND D74LD (HL), H
53LD D, EC9RETBCCP H
80ADD B89ADC C22LDI (HL), A
FFRST 38B7OR A84ADD H
70LD (HL), BFECP A, _ _0ELD C, _ _
F3DI89ADC C85ADD L
C7RST 00B6OR (HL)C4CALL NZ, _ _ _ _
BECP (HL)D9RETI87ADD A
0BDEC BC04INC BB3OR E
DCCALL C, _ _ F2F2 5ELD E, (HL)
3CINC A0DDEC C94SUB H
64LD H, H8DADC L01LD BC, _ _ _ _
40LD B, B44LD B, H08LD (_ _ _ _), SP
6ALD L, D1ELD E, _ _BBCP E
BBCP E0ALD A, (BC)49LD C, C
A6AND (HL)C8RET Z00NOP
6BLD L, E4DLD C, L61LD H, C
7ALD A, D0ALD A, (BC)45LD B, L
C1POP BC8FADC A5CLD E, H
13INC DE9BSBC E4CLD C, H
CEADC A, 5050 C5PUSH BC
75LD (HL), LE1POP HL7DLD A, L
89ADC CE5PUSH HLA2AND D

Ending

There are multiple ways to trigger the credits: 1. Change game state to 48 2. Warp to final area, then beat the boss 3. Trigger the ending scene. 4. Trigger the event right before the credits play
Method 1 only triggers the credits, but has no effect on the game whatsoever; the final boss flag at C5A1 does not get set, nor does the post game content flags. I do not think this counts as beating the game.
For method 2, this is the way the first 3 runs submitted uses method 2. Run 1 warps to the final area by taking advantage of the fact the map for the indoor areas and the antenna trees are all connected to each other. This means it's possible to run to the final antenna tree from the mountain one.
The 2nd and 3rd TAS jumps to VRAM, then due to an emulator bug regarding the STOP opcode (10 10), it doesn't crash, and instead coincidentally changes the map id to the final, upper left quadrant of the map, which is the final antenna tree's location.
This sets the final boss flag, along with post credits content, but is the slowest.
Method 3 sets the final boss flag. This can be done by setting the following values: CD00 = 01 CD02 = 0B CD03 = 01 CD06 = 6A This sets up the script for the scene right before you get teleported to the beginning area. There's still a final scene afterwards however, so while it's faster than method 2, it's not ideal.
This submission uses method 4. This can be done by setting the following values: CD00 = 01 CD02 = 1A CD03 = 01 CD06 = 6F This sets up the script for the very end part of the final dialogue, right before the post credits content flags are set. While this does not trigger the final boss flag, it does update the game into thinking you beat it. The reason why this even works is because the game does the following: 1. Dialogue with boss -> Method 2 2. Fight boss 3. Dialogue with boss 4. Update final boss flag -> Method 3 5. Ending scene 6. Update post credits content flags -> Method 4

Payload

There's multiple ways to handle this.
I initially wanted to just call the function that sets the game state to 48. That function is located at ROM bank 0F however. So I tried to somehow swap to bank 0F to call the credits, then somehow jump back. This was basically method 1 however, so CasualPokePlayer suggested to skip manpulating all those values to get :
ld bc,1d18 add hl,bc ; hl = e3e1 ld (hl),$30 jp somewhereitdontcrash?
After looking at the telefang translation github however, I found out the game's script function was partially documented: https://github.com/telefang/telefang/blob/master/components/eventscript/interpreter.asm In this case: CD00 - trigger event CD02 - Event ID CD03 - something about jp pointer CD06 - Event's sequence (how far you're in to event)
I initially had no idea how would I set multiple values up with the limited amount of addresses, until I found out recruited Telefang names are all stored side by side in CartRAM at 5200. To get to this to appear at System Bus however, I neded a way to swap SWRAM banks. Luckily, CasualPokePlayer found out there's a function located at 3D6A that does that: https://github.com/telefang/telefang/blob/3ec7bf14bf4b6686cbd2067f7e3e204724dd3648/components/saveclock/sram_lock.asm#L3-L11
This meant that rather that finding some combination of values to manpulate to somehow swap SWRAM banks, I could just call 3D6A. My name is long enough to do this:
OpcodeNameFunction
CD 6A 3DーゃかCall 3D6A
21 03 59ムウもLD HL, 5903
29ADD HL, HL
E0 E0nullLD (FF00 + E0), A
To jump to HL, I initially wanted to use the frame counter at C938 to E9 (JP HL), but it turns out C937 is always 01, which makes C938 unuseable due to the opcode being 2 bytes. Instead, I used C948 (Follower X pos on phone use) to get to E9 for the jump. The 03 offset for 5903 is because the 1st Denjuu's name last character (E0) is a 2 byte opcode, so it would mess up the payload.
Now that I could jump to the names, CasualPokePlayer suggested the following payload:
OpcodeNameFunction
DENJUUONEム ユュア
21 00 00LD HL,0000
25DEC HL ; HL = ffff
36 01ュアLD [HL],$01 ; only enable vblank interrupts
DENJUUTWOンちルヤア5
2E 48ンちLD l,$48 ; workaround no $90
29add HL,HL
24INC H ; HL = FF90
01 C0ア5LD BC
DENJUUTHREEキコェあネェ
07LD BC,$07C0
0ALD A,[BC ; A = FC
32LDD (HL), A
3E 18あネLD A,$18
32LDD (HL), A
DENJUUFOURアけモコェ8
01 40 23アけモ LD BC,$2340
0ALD A,[BC] ; load A with 76
32LDD (HL), A
C38JP
DENJUUFIVEけ ア
40 00JP to HL
01To get the 00 above
This didn't seem to work out however, so instead the payload was:

Stage by stage comments

<Put the name of the first stage here>

<Explain the first stage here>

<Put the name of the second stage here>

<Explain the second stage here>
<And so on>

Other comments

<Explain here things the audience would probably like to see> <Explain also things that could be improved in your movie> <You may also suggest screenshots.>

Samsara: wait i think this one's legit. anyway here's my number, so call me maybe (hands you a slip of paper with 69 written on it in crayon)
Samsara: Aw, here it goes.
feos: Fixed code embed (by replacing with monospaced, since code embeds don't have linbreaks in the forum view).
Samsara: Adding GEG branch due to ACE usage.
Samsara: The ending thing hasn't quite been explained in the submission text yet I don't think, so I'll summarize it here: This run triggers the very end of the ending, just before the credits. This plays the credits, of course, but more importantly it sets the game completion state by unlocking postgame content. Triggering the credits directly would not have done this, and triggering anything before this would have lost time. I've verified that the postgame state was triggered in this run by locating and accessing a piece of postgame content, meaning that for our purposes, the game is considered complete. Note that other event flags are NOT triggered, most notably the flag for the final boss's defeat. Flags like these are not necessary for GEG runs: Since a majority of the game is skipped anyway, so are a majority of normally required event flags. As long as these flags do not adversely affect the ending by not being triggered, then triggering them is unnecessary. In this case, since the final boss flag does not directly trigger the postgame content, it is fine that it is skipped.
That leaves the nature of the ACE itself: The currently published "map glitch" run has the same issue that the Wario Land GEG has. To simplify the explanation: VBA bad. To expound on the simplifying of the explanation: The previous Telefang runs and that Wario Land GEG run were only possible because VBA did not crash where an actual (or properly emulated) GBA would crash. This run avoids that through different methodology while also being a couple minutes faster to boot. Given that the run was performed on BizHawk, I am far more confident that this is legit given the incredible dedication of the GB/C emulation community to accuracy for console verification purposes.
I'm accepting this to obsolete the map glitch run, as it serves the same purpose with actual legitimacy this time. Thanks, VBA!
EDIT: Since this judgement, the TAS has been console verified, so... I guess it's double accepted now. Hooray!
fsvgm777: Processing. EZGames69 is handling the encodes for this one.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
Location: 127.0.0.1
xxezrabxxx
He/Him
Joined: 7/15/2017
Posts: 199
Location: Kentucky
Link to video encode
I like to comment on submissions and look around the site. You have probably seen me before (if you have been around for a while) either on the site, Discord, or any other social media. I recently took up making temporary encodes for new submissions. Also, I never forget to greet Tompa wherever I find him! "when resyncing stuff sucks it's called Resuccing" - EZGames69 “If an emulator stops being accepted to the site it should be called an emuLAMEr” - EZGames69 "oh no discord, everything I say will now be logged forever, sdfsdf, time to hide" - Masterjun "just had to give therapy to a taxi with daddy issues" - psx Current Projects: Mother 3 (75% complete)
Editor, Player (175)
Joined: 4/7/2015
Posts: 331
Location: Porto Alegre, RS, Brazil
Hell yes and I made a temporary encode for the masses Link to video
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter
Sanqui
Any
Player (26)
Joined: 4/25/2011
Posts: 33
Missing an in-depth, frame-by-frame comparison between Power and Speed versions Well done though! Devs thought they were clever by swapping into SRAM.
ovo
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
brunovalads wrote:
Hell yes and I made a temporary encode for the masses https://youtu.be/JirDSYZKJgI
Thanks! Nice preview pic too!
feos wrote:
Is this meant to properly obsolete [2225] GBC Keitai Denjuu Telefang: Speed Version "warp glitch" by jlun2 & MisterChess in 07:12.50?
Yes. That movie is impossible due to freezing at opcode 10 10.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Is map glitch not a game end glitch? The current labeling makes it look like it isn't...
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
feos wrote:
Is map glitch not a game end glitch? The current labeling makes it look like it isn't...
Well, the 1st run uses the map glitch too to go to the final area and beat the boss. Not sure if it should be a separate category now given there's a warpless run now though. Do I change it to Map Glitch too? I'm also unsure if the use of any non-GEG map bug would be fine for some type of "all bosses" run of some sort. Edit: The previous run (not the 1st run however) also jumps to VRAM, so it's also technically ACE. so: Run 1: No ACE, warps to final boss using map bug because the map is interconnected Run 2: ACE, jumps to VRAM via map bug to get glitched NPC IDs; impossible due to STOP opcode. Run 3: ACE, jumps to VRAM via map bug to get glitched NPC IDs; impossible due to STOP opcode. Run 4: ACE, jumps to WRAM via map bug to get glitched NPC IDs; this run.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
That means the first run can be described as "warp glitch" and all the rest are "game end glitch". "Map glitch" isn't something impossible to explain with existing common glitch types, like "X-ray glitch" in Super Metroid. And we don't need to highlight game-specific techniques in glitched labels if we can generalize by the effect. So I'll be renaming those branches.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Emulator Coder, Judge, Experienced player (729)
Joined: 2/26/2020
Posts: 779
Location: California
This TAS has been console verified. Link to video
Post subject: Claiming for encoding
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2761
Claiming for encoding
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Skilled player (1741)
Joined: 9/17/2009
Posts: 4981
Location: ̶C̶a̶n̶a̶d̶a̶ "Kanatah"
CasualPokePlayer wrote:
This TAS has been console verified. https://youtu.be/plEEzyQyaMw
Oh thanks so much for this! I was worried it might end up not working due to the bug at the very end, post credits that made it look like the currently published TAS. Also sorry for the still incomplete submission text; I have a busy work schedule lately.
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2761
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Post subject: Movie published
TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15576
Location: 127.0.0.1
This movie has been published. The posts before this message apply to the submission, and posts after this message apply to the published movie. ---- [4437] GBC Keitai Denjuu Telefang: Speed Version "game end glitch" by jlun2, CasualPokePlayer & MisterChess in 05:15.98