ROM:00000002 .word ENTRY ROM:00000002 .word 0xFFFF ROM:00000004 .word 0xFFFF ROM:00000006 .word 0xFFFF ROM:00000008 word_8: .word 0xFFFF ROM:0000000A word_A: .word 0xFFFF ROM:0000000C .word 0xFFFF ROM:0000000E .word VECTOR_NMI ROM:00000010 .word VECTOR_TRAPA_0 ROM:00000012 .word VECTOR_TRAPA_1 ROM:00000014 off_14: .word VECTOR_TRAPA_2 ROM:00000016 .word VECTOR_TRAPA_3 ROM:00000018 .word 0xFFFF ROM:0000001A .word VECTOR_CPU_SLEEP ROM:0000001C word_1C: .word 0xFFFF ROM:0000001E .word 0xFFFF ROM:00000020 .word VECTOR_IRQ0 ROM:00000022 .word VECTOR_IRQ1 ROM:00000024 .word VECTOR_IRQ_AEC ROM:00000026 .word 0xFFFF ROM:00000028 .word 0xFFFF ROM:0000002A .word VECTOR_COMP_0 ROM:0000002C .word VECTOR_COMP_1 ROM:0000002E .word VECTOR_RTC_QUARTER_SEC ROM:00000030 .word VECTOR_RTC_HALF_SEC ROM:00000032 .word VECTOR_RTC_EVERY_SEC ROM:00000034 .word VECTOR_RTC_EVERY_MIN ROM:00000036 .word VECTOR_RTC_EVERY_HOUR ROM:00000038 .word 0xFFFF ROM:0000003A .word VECTOR_RTC_WEEK ROM:0000003C .word VECTOR_RTC_ALARM ROM:0000003E .word VECTOR_WDT ROM:00000040 off_40: .word VECTOR_ASYNC_EVT_OVERFLOW ROM:00000042 .word VECTOR_TIMER_B1 ROM:00000044 .word VECTOR_SSU_I2C ROM:00000046 .word VECTOR_TIMER_W ROM:00000048 .word 0xFFFF ROM:0000004A .word VECTOR_SCI3 ROM:0000004C .word VECTOR_ADC ROM:0000004E .word 0xFFFF ROM:00000050 aJun262009: .ascii "Jun 26 2009"<0> ; DATA XREF: factoryTestPerformIfNeeded:loc_5A60r ROM:0000005C VERSION_A: .byte 0 ; DATA XREF: factoryTestPerformIfNeeded:nintendoDebugToolPresentr ROM:0000005D VERSION_B: .byte 2 ; DATA XREF: factoryTestPerformIfNeeded+AAr ROM:0000005E ; --------------------------------------------------------------------------- ROM:0000005E ROM:0000005E VECTOR_NMI: ; DATA XREF: ROM:0000000Eo ROM:0000005E rte ROM:00000060 ; --------------------------------------------------------------------------- ROM:00000060 ROM:00000060 VECTOR_TRAPA_0: ; DATA XREF: ROM:00000010o ROM:00000060 rte ROM:00000062 ; --------------------------------------------------------------------------- ROM:00000062 ROM:00000062 VECTOR_TRAPA_1: ; DATA XREF: ROM:00000012o ROM:00000062 rte ROM:00000064 ; --------------------------------------------------------------------------- ROM:00000064 ROM:00000064 VECTOR_TRAPA_2: ; DATA XREF: ROM:off_14o ROM:00000064 rte ROM:00000066 ; --------------------------------------------------------------------------- ROM:00000066 ROM:00000066 VECTOR_TRAPA_3: ; DATA XREF: ROM:00000016o ROM:00000066 rte ROM:00000068 ; --------------------------------------------------------------------------- ROM:00000068 ROM:00000068 VECTOR_CPU_SLEEP: ; DATA XREF: ROM:0000001Ao ROM:00000068 rte ROM:0000006A ; --------------------------------------------------------------------------- ROM:0000006A ROM:0000006A VECTOR_COMP_0: ; DATA XREF: ROM:0000002Ao ROM:0000006A rte ROM:0000006C ; --------------------------------------------------------------------------- ROM:0000006C ROM:0000006C VECTOR_COMP_1: ; DATA XREF: ROM:0000002Co ROM:0000006C rte ROM:0000006E ; --------------------------------------------------------------------------- ROM:0000006E ROM:0000006E VECTOR_RTC_WEEK: ; DATA XREF: ROM:0000003Ao ROM:0000006E rte ROM:00000070 ; --------------------------------------------------------------------------- ROM:00000070 ROM:00000070 VECTOR_RTC_ALARM: ; DATA XREF: ROM:0000003Co ROM:00000070 rte ROM:00000072 ; --------------------------------------------------------------------------- ROM:00000072 ROM:00000072 VECTOR_WDT: ; DATA XREF: ROM:0000003Eo ROM:00000072 rte ROM:00000074 ; --------------------------------------------------------------------------- ROM:00000074 ROM:00000074 VECTOR_ASYNC_EVT_OVERFLOW: ; DATA XREF: ROM:off_40o ROM:00000074 rte ROM:00000076 ; --------------------------------------------------------------------------- ROM:00000076 ROM:00000076 VECTOR_SSU_I2C: ; DATA XREF: ROM:00000044o ROM:00000076 rte ROM:00000078 ROM:00000078 ; =============== S U B R O U T I N E ======================================= ROM:00000078 ROM:00000078 ROM:00000078 set_timer_b_and_enable_irq: ; CODE XREF: ENTRY+E2p ROM:00000078 bset #2, @CKSTPR1:8 ; enable TB1CKSTP ROM:0000007C mov.b #0xBF, r0l ; '+' ; stop counter B ROM:0000007E mov.b r0l, @TMRB_TMB1:16 ROM:00000082 mov.b #0xF8, r0l ; '°' ; load it to F8 ROM:00000084 mov.b r0l, @TMRB_TCB1_TLB1:16 ROM:00000088 bclr #2, @IRQ_IRR2:8 ; clear irq flag ROM:0000008C bset #2, @IRQ_IENR2:8 ; enable irq ROM:00000090 mov.w #TMRB_TMB1, r0 ; go ROM:00000094 bset #6, @er0 ROM:00000098 rts ROM:00000098 ; End of function set_timer_b_and_enable_irq ROM:00000098 ROM:0000009A ROM:0000009A ; =============== S U B R O U T I N E ======================================= ROM:0000009A ROM:0000009A ROM:0000009A performActionAsRequestedByRemote: ; CODE XREF: maybe_shutDownIr_then_performActionAsRequested+24j ROM:0000009A mov.b @REQUESTED_POKEMON_ACTION_TYPE:16, r0l ROM:0000009E cmp.b #0xF0, r0l ; '=' ROM:000000A0 beq loc_108:8 ROM:000000A2 cmp.b #0xFE, r0l ; '¦' ROM:000000A4 beq loc_11A:8 ROM:000000A6 cmp.b #0xE0, r0l ; 'a' ROM:000000A8 beq loc_128:8 ROM:000000AA cmp.b #0x2A, r0l ; '*' ROM:000000AC beq act_2a:16 ROM:000000B0 cmp.b #0x2C, r0l ; ',' ROM:000000B2 beq act_2c:16 ROM:000000B6 cmp.b #0x38, r0l ; '8' ROM:000000B8 beq loc_17A:16 ROM:000000BC cmp.b #0x4E, r0l ; 'N' ROM:000000BE beq loc_188:16 ROM:000000C2 cmp.b #0x5A, r0l ; 'Z' ROM:000000C4 beq op_5a_walk_start:16 ROM:000000C8 cmp.b #0x66, r0l ; 'f' ROM:000000CA beq loc_1B6:16 ROM:000000CE cmp.b #0x16, r0l ROM:000000D0 beq loc_1CA:16 ROM:000000D4 cmp.b #0xC0, r0l ; '+' ROM:000000D6 beq loc_1D8:16 ROM:000000DA cmp.b #0xC2, r0l ; '-' ROM:000000DC beq loc_1EE:16 ROM:000000E0 cmp.b #0xC4, r0l ; '-' ROM:000000E2 beq loc_206:16 ROM:000000E6 cmp.b #0xC6, r0l ; '¦' ROM:000000E8 beq loc_21A:16 ROM:000000EC cmp.b #0xB8, r0l ; '+' ROM:000000EE beq loc_22E:16 ROM:000000F2 cmp.b #0xBA, r0l ; '¦' ROM:000000F4 beq loc_242:16 ROM:000000F8 cmp.b #0xBC, r0l ; '+' ROM:000000FA beq loc_256:16 ROM:000000FE cmp.b #0xBE, r0l ; '+' ROM:00000100 bne loc_282:16 ROM:00000104 jmp loc_26A:24 ROM:00000108 ; --------------------------------------------------------------------------- ROM:00000108 ROM:00000108 loc_108: ; CODE XREF: performActionAsRequestedByRemote+6j ROM:00000108 jsr initLcdUsingRomOrEepromCommands:24 ROM:0000010C mov.b #0x16, r0l ROM:0000010E mov.b r0l, @currentlyActiveView:16 ROM:00000112 jsr sub_AA42:24 ROM:00000116 jmp loc_2A0:24 ROM:0000011A ; --------------------------------------------------------------------------- ROM:0000011A ROM:0000011A loc_11A: ; CODE XREF: performActionAsRequestedByRemote+Aj ROM:0000011A mov.b #0x17, r0l ROM:0000011C mov.b r0l, @currentlyActiveView:16 ROM:00000120 jsr sub_AEBC:24 ROM:00000124 jmp loc_2A0:24 ROM:00000128 ; --------------------------------------------------------------------------- ROM:00000128 ROM:00000128 loc_128: ; CODE XREF: performActionAsRequestedByRemote+Ej ROM:00000128 jsr initLcdUsingRomOrEepromCommands:24 ROM:0000012C mov.w #0xE10, r0 ROM:00000130 mov.w r0, @word_FFF7A2:16 ROM:00000134 mov.w #0x101, r0 ROM:00000138 bra loc_152:8 ROM:0000013A ; --------------------------------------------------------------------------- ROM:0000013A ROM:0000013A act_2a: ; CODE XREF: performActionAsRequestedByRemote+12j ROM:0000013A mov.w #0xE10, r0 ROM:0000013E mov.w r0, @word_FFF7A2:16 ROM:00000142 mov.w #0x100, r0 ROM:00000146 bra loc_152:8 ROM:00000148 ; --------------------------------------------------------------------------- ROM:00000148 ROM:00000148 act_2c: ; CODE XREF: performActionAsRequestedByRemote+18j ROM:00000148 mov.w #0xE10, r0 ROM:0000014C mov.w r0, @word_FFF7A2:16 ROM:00000150 sub.w r0, r0 ROM:00000152 ROM:00000152 loc_152: ; CODE XREF: performActionAsRequestedByRemote+9Ej ROM:00000152 ; performActionAsRequestedByRemote+ACj ROM:00000152 jsr some_sort_of_eeprom_init:24 ; (bool r0l = wipeOutEventBitfield, bool r0h = wipeOutStepsAtLastSync) ROM:00000156 mov.b @RamCache_settingsByte:16, r0h ROM:0000015A shlr.b r0h ROM:0000015C and.b #3, r0h ROM:0000015E mov.b r0h, r0l ROM:00000160 jsr likelysetVolume:24 ROM:00000164 mov.b @RamCache_settingsByte:16, r0h ROM:00000168 shlr.b r0h ROM:0000016A shlr.b r0h ROM:0000016C shlr.b r0h ROM:0000016E and.b #0xF, r0h ROM:00000170 mov.b r0h, r0l ROM:00000172 jsr lcdSetContrast:24 ; (u8 contrast) //incremented y base_contrast_value ROM:00000176 jmp loc_296:24 ROM:0000017A ; --------------------------------------------------------------------------- ROM:0000017A ROM:0000017A loc_17A: ; CODE XREF: performActionAsRequestedByRemote+1Ej ROM:0000017A sub.l er0, er0 ROM:0000017C mov.l er0, @RamCache_STEP_COUNT_maybe:16 ROM:00000182 jsr startWalkEepromActions:24 ; () ROM:00000186 bra loc_1A6:8 ROM:00000188 ; --------------------------------------------------------------------------- ROM:00000188 ROM:00000188 loc_188: ; CODE XREF: performActionAsRequestedByRemote+24j ROM:00000188 jsr end_walk_action:24 ROM:0000018C mov.b #0x10, r0l ROM:0000018E jsr setCurrentlyActiveView:24 ROM:00000192 mov.b #5, r0l ROM:00000194 bra loc_1C2:8 ROM:00000196 ; --------------------------------------------------------------------------- ROM:00000196 ROM:00000196 op_5a_walk_start: ; CODE XREF: performActionAsRequestedByRemote+2Aj ROM:00000196 jsr startWalkEepromActions:24 ; () ROM:0000019A ROM:0000019A clear_special_route_info_and_all_B8_flags: ROM:0000019A sub.b r1l, r1l ROM:0000019C mov.l #0x6C8B800, er0 ROM:000001A2 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000001A6 ROM:000001A6 loc_1A6: ; CODE XREF: performActionAsRequestedByRemote+ECj ROM:000001A6 mov.b #0xF, r0l ROM:000001A8 jsr setCurrentlyActiveView:24 ROM:000001AC sub.b r0l, r0l ROM:000001AE mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000001AE ; gifted items view: this is item number that has focus and arrow ROM:000001AE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000001AE ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000001AE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000001B2 jmp loc_290:24 ROM:000001B6 ; --------------------------------------------------------------------------- ROM:000001B6 ROM:000001B6 loc_1B6: ; CODE XREF: performActionAsRequestedByRemote+30j ROM:000001B6 jsr clearWattsAndErasePokemonStructure:24 ROM:000001BA mov.b #0x10, r0l ROM:000001BC jsr setCurrentlyActiveView:24 ROM:000001C0 mov.b #6, r0l ROM:000001C2 ROM:000001C2 loc_1C2: ; CODE XREF: performActionAsRequestedByRemote+FAj ROM:000001C2 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000001C2 ; gifted items view: this is item number that has focus and arrow ROM:000001C2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000001C2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000001C2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000001C6 jmp loc_28E:24 ROM:000001CA ; --------------------------------------------------------------------------- ROM:000001CA ROM:000001CA loc_1CA: ; CODE XREF: performActionAsRequestedByRemote+36j ROM:000001CA mov.b #0xD, r0l ROM:000001CC jsr setCurrentlyActiveView:24 ROM:000001D0 jsr goToPeerPlayMicroApp:24 ROM:000001D4 jmp loc_2A0:24 ROM:000001D8 ; --------------------------------------------------------------------------- ROM:000001D8 ROM:000001D8 loc_1D8: ; CODE XREF: performActionAsRequestedByRemote+3Cj ROM:000001D8 mov.b #0x11, r0l ROM:000001DA jsr setCurrentlyActiveView:24 ROM:000001DE sub.b r0l, r0l ROM:000001E0 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000001E0 ; gifted items view: this is item number that has focus and arrow ROM:000001E0 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000001E0 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000001E0 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000001E4 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000001E4 ; battle: ROM:000001E4 ; 0 - battle opening animation ROM:000001E4 ; 1 - "XYZ appeared" message ROM:000001E4 ; 2 - "attack evade catch" directions shown ROM:000001E4 ; 3 - our action taken. details in gCurSubstateF ROM:000001E4 ; 4 - poke action taken. details in gCurSubstateF ROM:000001E4 ; 5 - "was too strong" ROM:000001E4 ; 6 - we lost ROM:000001E4 ; 7 - fled ROM:000001E4 ; 8 - staredown ROM:000001E4 ; 9 - almost had it ROM:000001E4 ; 10 - "threw a pokeball" ROM:000001E4 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000001E4 ; 12, 14 - pokeball flying ROM:000001E4 ; 13 - pokeball flying ROM:000001E4 ; 15 - catch animation plays ROM:000001E4 ; 16 - caught! ROM:000001E4 ; switcht: ROM:000001E4 ; cur slected poke name ROM:000001E8 mov.b #3, r0h ROM:000001EA jmp loc_27C:24 ROM:000001EE ; --------------------------------------------------------------------------- ROM:000001EE ROM:000001EE loc_1EE: ; CODE XREF: performActionAsRequestedByRemote+42j ROM:000001EE mov.b #0x11, r0l ROM:000001F0 jsr setCurrentlyActiveView:24 ROM:000001F4 sub.b r0l, r0l ROM:000001F6 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000001F6 ; gifted items view: this is item number that has focus and arrow ROM:000001F6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000001F6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000001F6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000001FA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000001FA ; battle: ROM:000001FA ; 0 - battle opening animation ROM:000001FA ; 1 - "XYZ appeared" message ROM:000001FA ; 2 - "attack evade catch" directions shown ROM:000001FA ; 3 - our action taken. details in gCurSubstateF ROM:000001FA ; 4 - poke action taken. details in gCurSubstateF ROM:000001FA ; 5 - "was too strong" ROM:000001FA ; 6 - we lost ROM:000001FA ; 7 - fled ROM:000001FA ; 8 - staredown ROM:000001FA ; 9 - almost had it ROM:000001FA ; 10 - "threw a pokeball" ROM:000001FA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000001FA ; 12, 14 - pokeball flying ROM:000001FA ; 13 - pokeball flying ROM:000001FA ; 15 - catch animation plays ROM:000001FA ; 16 - caught! ROM:000001FA ; switcht: ROM:000001FA ; cur slected poke name ROM:000001FE mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:000001FE ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000001FE ; ItemScreenHandler: ROM:000001FE ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000001FE ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000001FE ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000001FE ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000001FE ; 0x0010 - light grey pokeball ROM:000001FE ; 0x0020 - tiny map icon ROM:000001FE ; 0x0040 - found item #0 (slot nonempty) ROM:000001FE ; 0x0080 - found item #1 (slot nonempty) ROM:000001FE ; 0x0100 - found item #2 (slot nonempty) ROM:000001FE ; 0x0200 - grey item icon ROM:000001FE ; ItemRXed - what was RXed ROM:000001FE ; 0 - event pokemon ROM:000001FE ; 1 - special route ROM:000001FE ; 2 - item ROM:000001FE ; 3 - special ROM:000001FE ; 4 - stamp: heart ROM:000001FE ; 5 - stamp: spade ROM:000001FE ; 6 - stamp: diamond ROM:000001FE ; 7 - stamp: club ROM:000001FE ; switch: ROM:000001FE ; zero - pokemon does ROM:000001FE ; nonzero - item needs to be switched ROM:000001FE ; item RXed: ROM:000001FE ; what sort of thing was RXed: item, map, route, etc ROM:00000202 jmp loc_2A0:24 ROM:00000206 ; --------------------------------------------------------------------------- ROM:00000206 ROM:00000206 loc_206: ; CODE XREF: performActionAsRequestedByRemote+48j ROM:00000206 mov.b #0x11, r0l ROM:00000208 jsr setCurrentlyActiveView:24 ROM:0000020C sub.b r0l, r0l ROM:0000020E mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000020E ; gifted items view: this is item number that has focus and arrow ROM:0000020E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000020E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000020E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000212 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00000212 ; battle: ROM:00000212 ; 0 - battle opening animation ROM:00000212 ; 1 - "XYZ appeared" message ROM:00000212 ; 2 - "attack evade catch" directions shown ROM:00000212 ; 3 - our action taken. details in gCurSubstateF ROM:00000212 ; 4 - poke action taken. details in gCurSubstateF ROM:00000212 ; 5 - "was too strong" ROM:00000212 ; 6 - we lost ROM:00000212 ; 7 - fled ROM:00000212 ; 8 - staredown ROM:00000212 ; 9 - almost had it ROM:00000212 ; 10 - "threw a pokeball" ROM:00000212 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00000212 ; 12, 14 - pokeball flying ROM:00000212 ; 13 - pokeball flying ROM:00000212 ; 15 - catch animation plays ROM:00000212 ; 16 - caught! ROM:00000212 ; switcht: ROM:00000212 ; cur slected poke name ROM:00000216 mov.b #2, r0h ROM:00000218 bra loc_27C:8 ROM:0000021A ; --------------------------------------------------------------------------- ROM:0000021A ROM:0000021A loc_21A: ; CODE XREF: performActionAsRequestedByRemote+4Ej ROM:0000021A mov.b #0x11, r0l ROM:0000021C jsr setCurrentlyActiveView:24 ROM:00000220 sub.b r0l, r0l ROM:00000222 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00000222 ; gifted items view: this is item number that has focus and arrow ROM:00000222 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00000222 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00000222 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000226 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00000226 ; battle: ROM:00000226 ; 0 - battle opening animation ROM:00000226 ; 1 - "XYZ appeared" message ROM:00000226 ; 2 - "attack evade catch" directions shown ROM:00000226 ; 3 - our action taken. details in gCurSubstateF ROM:00000226 ; 4 - poke action taken. details in gCurSubstateF ROM:00000226 ; 5 - "was too strong" ROM:00000226 ; 6 - we lost ROM:00000226 ; 7 - fled ROM:00000226 ; 8 - staredown ROM:00000226 ; 9 - almost had it ROM:00000226 ; 10 - "threw a pokeball" ROM:00000226 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00000226 ; 12, 14 - pokeball flying ROM:00000226 ; 13 - pokeball flying ROM:00000226 ; 15 - catch animation plays ROM:00000226 ; 16 - caught! ROM:00000226 ; switcht: ROM:00000226 ; cur slected poke name ROM:0000022A mov.b #1, r0h ROM:0000022C bra loc_27C:8 ROM:0000022E ; --------------------------------------------------------------------------- ROM:0000022E ROM:0000022E loc_22E: ; CODE XREF: performActionAsRequestedByRemote+54j ROM:0000022E mov.b #0x11, r0l ROM:00000230 jsr setCurrentlyActiveView:24 ROM:00000234 sub.b r0l, r0l ROM:00000236 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00000236 ; gifted items view: this is item number that has focus and arrow ROM:00000236 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00000236 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00000236 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000023A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000023A ; battle: ROM:0000023A ; 0 - battle opening animation ROM:0000023A ; 1 - "XYZ appeared" message ROM:0000023A ; 2 - "attack evade catch" directions shown ROM:0000023A ; 3 - our action taken. details in gCurSubstateF ROM:0000023A ; 4 - poke action taken. details in gCurSubstateF ROM:0000023A ; 5 - "was too strong" ROM:0000023A ; 6 - we lost ROM:0000023A ; 7 - fled ROM:0000023A ; 8 - staredown ROM:0000023A ; 9 - almost had it ROM:0000023A ; 10 - "threw a pokeball" ROM:0000023A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000023A ; 12, 14 - pokeball flying ROM:0000023A ; 13 - pokeball flying ROM:0000023A ; 15 - catch animation plays ROM:0000023A ; 16 - caught! ROM:0000023A ; switcht: ROM:0000023A ; cur slected poke name ROM:0000023E mov.b #4, r0h ROM:00000240 bra loc_27C:8 ROM:00000242 ; --------------------------------------------------------------------------- ROM:00000242 ROM:00000242 loc_242: ; CODE XREF: performActionAsRequestedByRemote+5Aj ROM:00000242 mov.b #0x11, r0l ROM:00000244 jsr setCurrentlyActiveView:24 ROM:00000248 sub.b r0l, r0l ROM:0000024A mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000024A ; gifted items view: this is item number that has focus and arrow ROM:0000024A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000024A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000024A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000024E mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000024E ; battle: ROM:0000024E ; 0 - battle opening animation ROM:0000024E ; 1 - "XYZ appeared" message ROM:0000024E ; 2 - "attack evade catch" directions shown ROM:0000024E ; 3 - our action taken. details in gCurSubstateF ROM:0000024E ; 4 - poke action taken. details in gCurSubstateF ROM:0000024E ; 5 - "was too strong" ROM:0000024E ; 6 - we lost ROM:0000024E ; 7 - fled ROM:0000024E ; 8 - staredown ROM:0000024E ; 9 - almost had it ROM:0000024E ; 10 - "threw a pokeball" ROM:0000024E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000024E ; 12, 14 - pokeball flying ROM:0000024E ; 13 - pokeball flying ROM:0000024E ; 15 - catch animation plays ROM:0000024E ; 16 - caught! ROM:0000024E ; switcht: ROM:0000024E ; cur slected poke name ROM:00000252 mov.b #5, r0h ROM:00000254 bra loc_27C:8 ROM:00000256 ; --------------------------------------------------------------------------- ROM:00000256 ROM:00000256 loc_256: ; CODE XREF: performActionAsRequestedByRemote+60j ROM:00000256 mov.b #0x11, r0l ROM:00000258 jsr setCurrentlyActiveView:24 ROM:0000025C sub.b r0l, r0l ROM:0000025E mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000025E ; gifted items view: this is item number that has focus and arrow ROM:0000025E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000025E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000025E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000262 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00000262 ; battle: ROM:00000262 ; 0 - battle opening animation ROM:00000262 ; 1 - "XYZ appeared" message ROM:00000262 ; 2 - "attack evade catch" directions shown ROM:00000262 ; 3 - our action taken. details in gCurSubstateF ROM:00000262 ; 4 - poke action taken. details in gCurSubstateF ROM:00000262 ; 5 - "was too strong" ROM:00000262 ; 6 - we lost ROM:00000262 ; 7 - fled ROM:00000262 ; 8 - staredown ROM:00000262 ; 9 - almost had it ROM:00000262 ; 10 - "threw a pokeball" ROM:00000262 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00000262 ; 12, 14 - pokeball flying ROM:00000262 ; 13 - pokeball flying ROM:00000262 ; 15 - catch animation plays ROM:00000262 ; 16 - caught! ROM:00000262 ; switcht: ROM:00000262 ; cur slected poke name ROM:00000266 mov.b #6, r0h ROM:00000268 bra loc_27C:8 ROM:0000026A ; --------------------------------------------------------------------------- ROM:0000026A ROM:0000026A loc_26A: ; CODE XREF: performActionAsRequestedByRemote+6Aj ROM:0000026A mov.b #0x11, r0l ROM:0000026C jsr setCurrentlyActiveView:24 ROM:00000270 sub.b r0l, r0l ROM:00000272 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00000272 ; gifted items view: this is item number that has focus and arrow ROM:00000272 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00000272 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00000272 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000276 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00000276 ; battle: ROM:00000276 ; 0 - battle opening animation ROM:00000276 ; 1 - "XYZ appeared" message ROM:00000276 ; 2 - "attack evade catch" directions shown ROM:00000276 ; 3 - our action taken. details in gCurSubstateF ROM:00000276 ; 4 - poke action taken. details in gCurSubstateF ROM:00000276 ; 5 - "was too strong" ROM:00000276 ; 6 - we lost ROM:00000276 ; 7 - fled ROM:00000276 ; 8 - staredown ROM:00000276 ; 9 - almost had it ROM:00000276 ; 10 - "threw a pokeball" ROM:00000276 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00000276 ; 12, 14 - pokeball flying ROM:00000276 ; 13 - pokeball flying ROM:00000276 ; 15 - catch animation plays ROM:00000276 ; 16 - caught! ROM:00000276 ; switcht: ROM:00000276 ; cur slected poke name ROM:0000027A mov.b #7, r0h ROM:0000027C ROM:0000027C loc_27C: ; CODE XREF: performActionAsRequestedByRemote+150j ROM:0000027C ; performActionAsRequestedByRemote+17Ej ... ROM:0000027C mov.b r0h, @gCurSubstateA:16 ; Substate for various modes ROM:0000027C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000027C ; ItemScreenHandler: ROM:0000027C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000027C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000027C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000027C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000027C ; 0x0010 - light grey pokeball ROM:0000027C ; 0x0020 - tiny map icon ROM:0000027C ; 0x0040 - found item #0 (slot nonempty) ROM:0000027C ; 0x0080 - found item #1 (slot nonempty) ROM:0000027C ; 0x0100 - found item #2 (slot nonempty) ROM:0000027C ; 0x0200 - grey item icon ROM:0000027C ; ItemRXed - what was RXed ROM:0000027C ; 0 - event pokemon ROM:0000027C ; 1 - special route ROM:0000027C ; 2 - item ROM:0000027C ; 3 - special ROM:0000027C ; 4 - stamp: heart ROM:0000027C ; 5 - stamp: spade ROM:0000027C ; 6 - stamp: diamond ROM:0000027C ; 7 - stamp: club ROM:0000027C ; switch: ROM:0000027C ; zero - pokemon does ROM:0000027C ; nonzero - item needs to be switched ROM:0000027C ; item RXed: ROM:0000027C ; what sort of thing was RXed: item, map, route, etc ROM:00000280 bra loc_2A0:8 ROM:00000282 ; --------------------------------------------------------------------------- ROM:00000282 ROM:00000282 loc_282: ; CODE XREF: performActionAsRequestedByRemote+66j ROM:00000282 mov.b @commsErrorMessageId:16, r0l ROM:00000286 beq loc_296:8 ROM:00000288 mov.b #0xE, r0l ROM:0000028A jsr setCurrentlyActiveView:24 ROM:0000028E ROM:0000028E loc_28E: ; CODE XREF: performActionAsRequestedByRemote+12Cj ROM:0000028E sub.b r0l, r0l ROM:00000290 ROM:00000290 loc_290: ; CODE XREF: performActionAsRequestedByRemote+118j ROM:00000290 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00000290 ; battle: ROM:00000290 ; 0 - battle opening animation ROM:00000290 ; 1 - "XYZ appeared" message ROM:00000290 ; 2 - "attack evade catch" directions shown ROM:00000290 ; 3 - our action taken. details in gCurSubstateF ROM:00000290 ; 4 - poke action taken. details in gCurSubstateF ROM:00000290 ; 5 - "was too strong" ROM:00000290 ; 6 - we lost ROM:00000290 ; 7 - fled ROM:00000290 ; 8 - staredown ROM:00000290 ; 9 - almost had it ROM:00000290 ; 10 - "threw a pokeball" ROM:00000290 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00000290 ; 12, 14 - pokeball flying ROM:00000290 ; 13 - pokeball flying ROM:00000290 ; 15 - catch animation plays ROM:00000290 ; 16 - caught! ROM:00000290 ; switcht: ROM:00000290 ; cur slected poke name ROM:00000294 bra loc_2A0:8 ROM:00000296 ; --------------------------------------------------------------------------- ROM:00000296 ROM:00000296 loc_296: ; CODE XREF: performActionAsRequestedByRemote+DCj ROM:00000296 ; performActionAsRequestedByRemote+1ECj ROM:00000296 jsr someStateVarShuffling:24 ROM:0000029A sub.b r0l, r0l ROM:0000029C jsr setCurrentlyActiveView:24 ROM:000002A0 ROM:000002A0 loc_2A0: ; CODE XREF: performActionAsRequestedByRemote+7Cj ROM:000002A0 ; performActionAsRequestedByRemote+8Aj ... ROM:000002A0 sub.b r0l, r0l ROM:000002A2 mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:000002A6 jsr clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6:24 ROM:000002AA mov.w #sleepModeEventLoop, r0 ROM:000002AE jsr setEventLoopFunc:24 ROM:000002B2 ldc.b #0, ccr ROM:000002B4 mov.w #currentHour, r1 ROM:000002B8 mov.w #currentMinute, e0 ROM:000002BC mov.w #currentSecond, r0 ROM:000002C0 jmp rtcReadBcd:24 ; (r0 = secondsOutBcdP, e0 = minutesOutBcdP, r1 = hoursOutBcdP) ROM:000002C0 ; End of function performActionAsRequestedByRemote ROM:000002C0 ROM:000002C4 ROM:000002C4 ; =============== S U B R O U T I N E ======================================= ROM:000002C4 ROM:000002C4 ROM:000002C4 ENTRY: ; DATA XREF: ROM:off_0o ROM:000002C4 mov.w #0xFF80, r7 ; set stack to top of ram ROM:000002C8 subs #4, sp ROM:000002CA jsr copy_data_zero_bss:24 ROM:000002CE jsr basicIoConfig:24 ROM:000002D2 jsr accelInit:24 ; bool () -> result in r0l ROM:000002D6 bld #0, @WDT_TCSRWD1:8 ROM:000002DA bcc reset_cause_analyzed:8 ROM:000002DC ROM:000002DC reset_was_caused_by_watchdog_timer: ROM:000002DC mov.w #0x72, r0 ; 'r' ROM:000002E0 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000002E4 mov.b r0l, r6l ROM:000002E6 inc.b r6l ROM:000002E8 mov.b r6l, r1l ROM:000002EA mov.w #0x72, r0 ; 'r' ROM:000002EE jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:000002F2 ROM:000002F2 reset_cause_analyzed: ; CODE XREF: ENTRY+16j ROM:000002F2 mov.w #RamCache_totalSteps, r6 ROM:000002F6 sub.w e0, e0 ROM:000002F8 sub.b r0l, r0l ROM:000002FA ROM:000002FA loc_2FA: ; CODE XREF: ENTRY+40j ROM:000002FA mov.b r0l, @er6 ; zero 0x3E bytes at 0xF780 ROM:000002FC inc.w #1, r6 ROM:000002FE inc.w #1, e0 ROM:00000300 cmp.w #0x3E, e0 ; '>' ROM:00000304 bcs loc_2FA:8 ROM:00000306 mov.b r0l, @byte_FFF7A8:16 ROM:0000030A mov.w #common_bit_flags, r0 ROM:0000030E bset #4, @er0 ROM:00000312 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00000312 ; 0x04 - have walking poke ROM:00000316 and.b #0xE7, r0l ROM:00000318 or.b #0x10, r0l ROM:0000031A mov.b r0l, @walker_status_flags:16 ; 0x02 - walker inited ROM:0000031A ; 0x04 - have walking poke ROM:0000031E mov.b #0x3C, r0l ; '<' ROM:00000320 mov.b r0l, @byte_FFF7AF:16 ROM:00000324 mov.b #0x5A, r0l ; 'Z' ROM:00000326 mov.b r0l, @byte_FFF7B0:16 ROM:0000032A mov.w #0xE10, r0 ROM:0000032E mov.w r0, @word_FFF7A2:16 ROM:00000332 jsr clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6:24 ROM:00000336 jsr factoryTestPerformIfNeeded:24 ; () -> () ROM:0000033A jsr wdt_maybe_off:24 ROM:0000033E jsr checkForAndInitEepromContentsIfNeeded:24 ROM:00000342 jsr wdt_maybe_on:24 ROM:00000346 bra loc_34C:8 ROM:00000348 ; --------------------------------------------------------------------------- ROM:00000348 ROM:00000348 loc_348: ; CODE XREF: ENTRY+92j ROM:00000348 jsr wdt_maybe_pet:24 ROM:0000034C ROM:0000034C loc_34C: ; CODE XREF: ENTRY+82j ROM:0000034C mov.w #0x13, r0 ROM:00000350 jsr checkBatteryForBelowGivenLevel:24 ; (r0 = level /* out of 20 */) -> bool isBelow ROM:00000354 mov.b r0l, r0l ROM:00000356 bne loc_348:8 ROM:00000358 jsr configureSomeIoAndTimerW:24 ROM:0000035C mov.b @RamCache_settingsByte:16, r0h ROM:00000360 shlr.b r0h ROM:00000362 and.b #3, r0h ROM:00000364 mov.b r0h, r0l ROM:00000366 jsr likelysetVolume:24 ROM:0000036A jsr initLcdUsingRomOrEepromCommands:24 ROM:0000036E jsr delaySomewhatAndThenSetTheRtc:24 ROM:00000372 mov.w r7, e0 ROM:00000374 mov.w #4, r1 ROM:00000378 mov.w #0x153, r0 ROM:0000037C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00000380 mov.l @sp, er0 ROM:00000384 jsr setRandomSeed:24 ; (er0 = seed) ROM:00000388 jsr j_io_related_weirdness:24 ROM:0000038C jsr maybeConfigureKeys:24 ROM:00000390 jsr accelInit:24 ; bool () -> result in r0l ROM:00000394 mov.w #sleepModeEventLoop, r0 ROM:00000398 jsr setEventLoopFunc:24 ROM:0000039C jsr someStateVarShuffling:24 ROM:000003A0 sub.b r0l, r0l ROM:000003A2 mov.b r0l, @currentlyActiveView:16 ROM:000003A6 jsr set_timer_b_and_enable_irq:24 ROM:000003AA ldc.b #0, ccr ROM:000003AC ROM:000003AC call_event_loop_foever: ; CODE XREF: ENTRY+EEj ROM:000003AC mov.w @currentEventLoopFunc:16, r0 ROM:000003B0 jsr @er0 ROM:000003B2 bra call_event_loop_foever:8 ROM:000003B2 ; End of function ENTRY ROM:000003B2 ROM:000003B4 ROM:000003B4 ; =============== S U B R O U T I N E ======================================= ROM:000003B4 ROM:000003B4 ROM:000003B4 processSyncPacketFromGame: ; CODE XREF: irCommsEventLoop:rxed_0x32p ROM:000003B4 ; irCommsEventLoop:rxed_0x40p ... ROM:000003B4 ROM:000003B4 ; FUNCTION CHUNK AT ROM:00000700 SIZE 00000014 BYTES ROM:000003B4 ROM:000003B4 push.l er2 ROM:000003B8 push.w r3 ROM:000003BA push.l er4 ROM:000003BE push.l er5 ROM:000003C2 push.l er6 ROM:000003C6 jsr get_packet_data_pointer:24 ROM:000003CA mov.w #sometimes_new_rxed_data_for_0xED, r1 ; from ??? and from peer play peer ROM:000003CE mov.w #0x68, r2 ; 'h' ROM:000003D2 jsr memoryCopy:24 ; (r0 = src, r1 = dst, r2 = len) ROM:000003D6 mov.b @byte_FFF841:16, r0l ; offst 0x5B ROM:000003DA and.b #0xF8, r0l ROM:000003DC cmp.b #0xC0, r0l ; '+' ROM:000003DE bcc loc_40E:8 ROM:000003E0 ROM:000003E0 likely_set_rtc: ; offst 0x5B ROM:000003E0 mov.b @byte_FFF841:16, r0l ROM:000003E4 shlr.b r0l ; this code convers the value to BCD ROM:000003E6 shlr.b r0l ROM:000003E8 shlr.b r0l ; ? >> 3 ROM:000003EA extu.w r0 ROM:000003EC mov.w r0, r6 ROM:000003EE exts.l er0 ROM:000003F0 mov.w #0xA, r1 ROM:000003F4 divxs.w r1, er0 ; (? >> 3) / 10 ROM:000003F8 mov.w #0x10, e0 ROM:000003FC mulxu.w e0, er0 ; (? >> 3) / 10 * 10 ROM:000003FE mov.w r6, r2 ROM:00000400 exts.l er2 ROM:00000402 divxs.w r1, er2 ROM:00000406 mov.w e2, r2 ; (? >> 3) % 10 ROM:00000408 or.b r2l, r0l ROM:0000040A mov.b r0l, @byte_FFF7A8:16 ROM:0000040E ROM:0000040E loc_40E: ; CODE XREF: processSyncPacketFromGame+2Aj ROM:0000040E mov.l @dword_FFF846:16, er6 ; offst 0x60 ROM:00000414 beq loc_422:8 ROM:00000416 mov.l er6, @RamCache_lastSyncTime:16 ROM:0000041C mov.l er6, er0 ROM:0000041E jsr rtcSet:24 ; (er0 = timeInSeconds) ROM:00000422 ROM:00000422 loc_422: ; CODE XREF: processSyncPacketFromGame+60j ROM:00000422 jmp common_epilogue_also:24 ROM:00000422 ; End of function processSyncPacketFromGame ROM:00000422 ROM:00000426 ROM:00000426 ; =============== S U B R O U T I N E ======================================= ROM:00000426 ROM:00000426 ROM:00000426 copyTeamAndconfigDataFromStagingArea: ; CODE XREF: startWalkEepromActions+2Cp ROM:00000426 ; checkForAndInitEepromContentsIfNeeded+86p ROM:00000426 mov.w #0x80, r6 ; 'Ç' ROM:0000042A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000042E mov.w r6, r0 ROM:00000430 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00000434 mov.w r0, r4 ROM:00000436 ROM:00000436 copy_0x2900_bytes_from_0xD700_to_0x8f00: ROM:00000436 mov.w #0xD700, e4 ROM:0000043A mov.l #0x528F00, er5 ROM:00000440 mov.w e5, e6 ROM:00000442 ROM:00000442 loc_442: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+36j ROM:00000442 mov.w r6, r1 ROM:00000444 mov.w r4, e0 ROM:00000446 mov.w e4, r0 ROM:00000448 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000044C mov.w r6, r1 ROM:0000044E mov.w r4, e0 ROM:00000450 mov.w r5, r0 ROM:00000452 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00000456 add.w r6, e4 ROM:00000458 add.w r6, r5 ROM:0000045A dec.w #1, e6 ROM:0000045C bne loc_442:8 ROM:0000045E ROM:0000045E copy_0x280_bytes_from_0xD480_to_0xcc00: ROM:0000045E mov.w #0xD480, e4 ROM:00000462 mov.l #0x5CC00, er5 ROM:00000468 sub.w e6, e6 ROM:0000046A bra loc_486:8 ROM:0000046C ; --------------------------------------------------------------------------- ROM:0000046C ROM:0000046C loc_46C: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+62j ROM:0000046C mov.w r6, r1 ROM:0000046E mov.w r4, e0 ROM:00000470 mov.w e4, r0 ROM:00000472 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00000476 mov.w r6, r1 ROM:00000478 mov.w r4, e0 ROM:0000047A mov.w r5, r0 ROM:0000047C jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00000480 add.w r6, e4 ROM:00000482 add.w r6, r5 ROM:00000484 inc.w #1, e6 ROM:00000486 ROM:00000486 loc_486: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+44j ROM:00000486 cmp.w e5, e6 ROM:00000488 bcs loc_46C:8 ROM:0000048A rts ROM:0000048A ; End of function copyTeamAndconfigDataFromStagingArea ROM:0000048A ROM:0000048C ROM:0000048C ; =============== S U B R O U T I N E ======================================= ROM:0000048C ROM:0000048C ; () ROM:0000048C ROM:0000048C startWalkEepromActions: ; CODE XREF: performActionAsRequestedByRemote+E8p ROM:0000048C ; performActionAsRequestedByRemote:op_5a_walk_startp ROM:0000048C ROM:0000048C var_4 = -4 ROM:0000048C var_2 = -2 ROM:0000048C var_1 = -1 ROM:0000048C ROM:0000048C push.l er2 ROM:00000490 push.l er4 ROM:00000494 push.l er5 ROM:00000498 push.l er6 ROM:0000049C subs #4, sp ROM:0000049E mov.b #0xA5, r0l ; 'Ñ' ; mark copy in progress ROM:000004A0 mov.b r0l, @(3:16,sp) ROM:000004A4 mov.w r7, r1 ROM:000004A6 add.w #3, r1 ROM:000004AA mov.w #1, e1 ROM:000004AE mov.l #0x26F016F, er0 ROM:000004B4 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000004B4 ; ROM:000004B4 ; see docs for readRedundantDataFromEeprom for format info ROM:000004B8 jsr copyTeamAndconfigDataFromStagingArea:24 ROM:000004BC sub.b r0l, r0l ; mark copy done ROM:000004BE mov.b r0l, @(2:16,sp) ROM:000004C2 mov.w r7, r1 ROM:000004C4 inc.w #2, r1 ROM:000004C6 mov.w #1, e1 ROM:000004CA mov.l #0x26F016F, er0 ROM:000004D0 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000004D0 ; ROM:000004D0 ; see docs for readRedundantDataFromEeprom for format info ROM:000004D4 mov.w #0xCF0C, r6 ; clear_vent_log ROM:000004D8 mov.b #0x18, r5l ROM:000004DA ROM:000004DA loc_4DA: ; CODE XREF: startWalkEepromActions+60j ROM:000004DA mov.w #0x84, r0 ; 'ä' ROM:000004DE add.w r6, r0 ROM:000004E0 sub.b r1l, r1l ROM:000004E2 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:000004E6 add.w #0x88, r6 ; 'ê' ROM:000004EA dec.b r5l ROM:000004EC bne loc_4DA:8 ROM:000004EE ROM:000004EE clear_peer_team_datas_list: ROM:000004EE sub.b r1l, r1l ROM:000004F0 mov.l #0x1568DE24, er0 ROM:000004F6 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000004FA ROM:000004FA clear_cur_watts: ROM:000004FA sub.w r0, r0 ROM:000004FC mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:00000500 mov.w r0, @word_FFF790:16 ROM:00000504 mov.b r0l, @likelyCurEventLogPointer:16 ROM:00000508 mov.w r0, @RamCache_curWatts:16 ROM:0000050C mov.w #0x18, e1 ROM:00000510 mov.w #RamCache_totalSteps, r1 ROM:00000514 mov.l #0x2560156, er0 ROM:0000051A jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000051A ; ROM:0000051A ; see docs for readRedundantDataFromEeprom for format info ROM:0000051E mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:0000051E ; 0x04 - have walking poke ROM:00000522 bset #2, @er0 ; have poke ROM:00000526 bset #1, @er0 ; walker inited ROM:0000052A mov.w #RamCache_ED_data, r6 ROM:0000052E mov.w #0x68, e1 ; 'h' ROM:00000532 mov.w r6, r1 ROM:00000534 mov.l #0x1ED00ED, er0 ROM:0000053A jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000053A ; ROM:0000053A ; data is stored in two provided locations and read to RAM ROM:0000053A ; each location includes a checksum right after the data (not inluded in length) ROM:0000053A ; ROM:0000053A ; if only one location has checksum-valid data, other is replaced with it ROM:0000053A ; ROM:0000053A ; if both appear valid, #0 is assumed dominant ROM:0000053A ; ROM:0000053A ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000053E mov.w #0x5B, r0 ; '[' ROM:00000542 add.w r6, r0 ROM:00000544 bset #0, @er0 ; paired to game ROM:00000548 mov.w #0x5B, r0 ; '[' ROM:0000054C add.w r6, r0 ROM:0000054E bset #1, @er0 ; have poke ROM:00000552 mov.w #0x5B, r0 ; '[' ROM:00000556 add.w r6, r0 ROM:00000558 bclr #2, @er0 ; ??? ROM:0000055C mov.l @sometimes_new_rxed_data_for_0xED:16, er0 ; from ??? and from peer play peer ROM:00000562 mov.l er0, @er6 ROM:00000566 mov.l @dword_FFF7EA:16, er0 ROM:0000056C mov.l er0, @(4:16,er6) ROM:00000572 mov.w @word_FFF7EE:16, r0 ROM:00000576 mov.w r0, @(8:16,er6) ROM:0000057A mov.w @word_FFF7F0:16, r0 ROM:0000057E mov.w r0, @(0xA:16,er6) ROM:00000582 mov.l @dword_FFF7F2:16, er0 ROM:00000588 mov.l er0, @(0xC:16,er6) ROM:0000058E sub.b r5l, r5l ROM:00000590 ROM:00000590 loc_590: ; CODE XREF: startWalkEepromActions+11Cj ROM:00000590 extu.w r5 ROM:00000592 mov.w r5, e0 ROM:00000594 mov.w #0x48, r0 ; 'H' ROM:00000598 add.w r6, r0 ROM:0000059A add.w e0, r0 ROM:0000059C mov.w e0, r1 ROM:0000059E mov.b @(byte_FFF82E,er1), r1l ROM:000005A2 mov.b r1l, @er0 ROM:000005A4 inc.b r5l ROM:000005A6 cmp.b #0x12, r5l ROM:000005A8 bcs loc_590:8 ROM:000005AA mov.b @byte_FFF842:16, r0l ROM:000005AE mov.b r0l, @(0x5C:16,er6) ROM:000005B2 mov.b @byte_FFF843:16, r0l ROM:000005B6 mov.b r0l, @(0x5D:16,er6) ROM:000005BA sub.b r0l, r0l ROM:000005BC mov.b r0l, @(0x5E:16,er6) ROM:000005C0 mov.b #2, r0h ROM:000005C2 mov.b r0h, @(0x5F:16,er6) ROM:000005C6 mov.w r6, r1 ROM:000005C8 mov.w #0x68, e1 ; 'h' ROM:000005CC mov.l #0x1ED00ED, er0 ROM:000005D2 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000005D2 ; ROM:000005D2 ; see docs for readRedundantDataFromEeprom for format info ROM:000005D6 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000005DA mov.w #0xBE, r0 ; '+' ROM:000005DE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000005E2 mov.w r0, r6 ROM:000005E4 mov.w r0, e0 ROM:000005E6 mov.w #0xBE, r1 ; '+' ROM:000005EA mov.w #0x8F00, r0 ROM:000005EE jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000005F2 sub.b r0l, r0l ROM:000005F4 push.w r0 ROM:000005F6 sub.b r1h, r1h ROM:000005F8 mov.b @RamCache_settingsByte:16, r0l ROM:000005FC bld #0, r0l ROM:000005FE bst #0, r1h ROM:00000600 mov.w #0x88, r0 ; 'ê' ROM:00000604 mov.w r1, @(2:16,sp) ROM:00000608 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000060C mov.w r0, e0 ROM:0000060E mov.w r6, r0 ROM:00000610 sub.w e1, e1 ROM:00000612 mov.b @(2:16,sp), r1h ROM:00000616 mov.b #0x19, r1l ROM:00000618 jsr logEvent:24 ; ( ROM:00000618 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00000618 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00000618 ; r1l = eventTYpe ROM:00000618 ; r1h = boolean isOnSpecialEventRoute ROM:00000618 ; e1 = extraInfo (eg: item type) ROM:00000618 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00000618 ; ) ROM:0000061C adds #2, sp ROM:0000061E jsr eraseCaughtPokemonanddowsedAndGiftedItems:24 ROM:00000622 adds #4, sp ROM:00000624 pop.l er6 ROM:00000628 pop.l er5 ROM:0000062C pop.l er4 ROM:00000630 pop.l er2 ROM:00000634 rts ROM:00000634 ; End of function startWalkEepromActions ROM:00000634 ROM:00000636 ROM:00000636 ; =============== S U B R O U T I N E ======================================= ROM:00000636 ROM:00000636 ROM:00000636 end_walk_action: ; CODE XREF: performActionAsRequestedByRemote:loc_188p ROM:00000636 push.w r3 ROM:00000638 push.w r6 ROM:0000063A mov.w #sometimes_new_rxed_data_for_0xED, r6 ; from ??? and from peer play peer ROM:0000063E mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:0000063E ; 0x04 - have walking poke ROM:00000642 bclr #2, @er0 ROM:00000646 mov.w #RamCache_settingsByte, r0 ROM:0000064A bclr #0, @er0 ; clear "special route" bit ROM:0000064E sub.b r0l, r0l ROM:00000650 mov.b r0l, @likelyCurEventLogPointer:16 ROM:00000654 sub.w e0, e0 ROM:00000656 mov.w e0, @RamCache_curWatts:16 ; clear cur watts ROM:0000065A mov.w #0x18, e1 ROM:0000065E mov.w #RamCache_totalSteps, r1 ROM:00000662 mov.l #0x2560156, er0 ROM:00000668 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00000668 ; ROM:00000668 ; see docs for readRedundantDataFromEeprom for format info ROM:0000066C mov.w #0x68, e1 ; 'h' ROM:00000670 mov.w r6, r1 ROM:00000672 mov.l #0x1ED00ED, er0 ROM:00000678 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00000678 ; ROM:00000678 ; data is stored in two provided locations and read to RAM ROM:00000678 ; each location includes a checksum right after the data (not inluded in length) ROM:00000678 ; ROM:00000678 ; if only one location has checksum-valid data, other is replaced with it ROM:00000678 ; ROM:00000678 ; if both appear valid, #0 is assumed dominant ROM:00000678 ; ROM:00000678 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000067C sub.l er0, er0 ROM:0000067E mov.l er0, @(4:16,er6) ROM:00000684 mov.w r0, @(0xA:16,er6) ROM:00000688 mov.b #0x5B, r0l ; '[' ROM:0000068A add.w r6, r0 ROM:0000068C bclr #1, @er0 ROM:00000690 mov.w #0x5B, r0 ; '[' ROM:00000694 add.w r6, r0 ROM:00000696 bclr #2, @er0 ROM:0000069A mov.w r6, r1 ROM:0000069C mov.w #0x68, e1 ; 'h' ROM:000006A0 mov.l #0x1ED00ED, er0 ROM:000006A6 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000006A6 ; ROM:000006A6 ; see docs for readRedundantDataFromEeprom for format info ROM:000006AA jsr eraseCaughtPokemonanddowsedAndGiftedItems:24 ROM:000006AE jsr fill_some_eeprom_structs:24 ROM:000006B2 sub.b r1l, r1l ROM:000006B4 mov.l #0x6C8B800, er0 ROM:000006BA jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000006BE sub.b r1l, r1l ROM:000006C0 mov.l #0x1568DE24, er0 ROM:000006C6 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000006CA mov.w #0x8F00, r0 ROM:000006CE sub.b r1l, r1l ROM:000006D0 mov.w #0x10, e0 ROM:000006D4 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000006D8 pop.w r6 ROM:000006DA pop.w r3 ROM:000006DC rts ROM:000006DC ; End of function end_walk_action ROM:000006DC ROM:000006DE ROM:000006DE ; =============== S U B R O U T I N E ======================================= ROM:000006DE ROM:000006DE ROM:000006DE clearWattsAndErasePokemonStructure: ; CODE XREF: performActionAsRequestedByRemote:loc_1B6p ROM:000006DE sub.w r0, r0 ROM:000006E0 mov.w r0, @RamCache_curWatts:16 ROM:000006E4 mov.w #0x18, e1 ROM:000006E8 mov.w #RamCache_totalSteps, r1 ROM:000006EC mov.l #0x2560156, er0 ROM:000006F2 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000006F2 ; ROM:000006F2 ; see docs for readRedundantDataFromEeprom for format info ROM:000006F6 jmp eraseCaughtPokemonanddowsedAndGiftedItems:24 ROM:000006F6 ; End of function clearWattsAndErasePokemonStructure ROM:000006F6 ROM:000006FA ROM:000006FA ; =============== S U B R O U T I N E ======================================= ROM:000006FA ROM:000006FA ROM:000006FA VECTOR_TIMER_B1: ; DATA XREF: ROM:00000042o ROM:000006FA bclr #2, @IRQ_IRR2:8 ROM:000006FE rte ROM:000006FE ; End of function VECTOR_TIMER_B1 ROM:000006FE ROM:00000700 ; --------------------------------------------------------------------------- ROM:00000700 ; START OF FUNCTION CHUNK FOR processSyncPacketFromGame ROM:00000700 ROM:00000700 common_epilogue_also: ; CODE XREF: processSyncPacketFromGame:loc_422j ROM:00000700 ; delaySomewhatAndThenSetTheRtc+2Cj ROM:00000700 pop.l er6 ROM:00000704 pop.l er5 ROM:00000708 pop.l er4 ROM:0000070C pop.w r3 ROM:0000070E pop.l er2 ROM:00000712 rts ROM:00000712 ; END OF FUNCTION CHUNK FOR processSyncPacketFromGame ROM:00000714 ROM:00000714 ; =============== S U B R O U T I N E ======================================= ROM:00000714 ROM:00000714 ; (r0 = dataP, er1 = len) -> r0 ROM:00000714 ROM:00000714 calcPacketCrc: ; CODE XREF: sendPacket+32p ROM:00000714 ; irCommsEventLoop+17Ap ROM:00000714 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00000718 mov.w r0, r3 ROM:0000071A mov.l er1, er2 ROM:0000071C sub.l er5, er5 ROM:0000071E mov.b #2, r5l ROM:00000720 sub.l er6, er6 ROM:00000722 bra loc_73C:8 ROM:00000724 ; --------------------------------------------------------------------------- ROM:00000724 ROM:00000724 loc_724: ; CODE XREF: calcPacketCrc+2Cj ROM:00000724 mov.b @er3+, r1l ROM:00000726 btst #0, r6l ROM:00000728 beq loc_732:8 ROM:0000072A extu.w r1 ROM:0000072C extu.l er1 ROM:0000072E add.l er1, er5 ROM:00000730 bra loc_73A:8 ROM:00000732 ; --------------------------------------------------------------------------- ROM:00000732 ROM:00000732 loc_732: ; CODE XREF: calcPacketCrc+14j ROM:00000732 mov.b r1l, r0h ROM:00000734 sub.b r0l, r0l ROM:00000736 extu.l er0 ROM:00000738 add.l er0, er5 ROM:0000073A ROM:0000073A loc_73A: ; CODE XREF: calcPacketCrc+1Cj ROM:0000073A inc.l #1, er6 ROM:0000073C ROM:0000073C loc_73C: ; CODE XREF: calcPacketCrc+Ej ROM:0000073C mov.l er2, er0 ROM:0000073E cmp.l er0, er6 ROM:00000740 bcs loc_724:8 ROM:00000742 mov.w e5, r0 ; r0 = sum >> 16 ROM:00000744 sub.w e0, e0 ; e0 = 0 ROM:00000746 mov.w r5, r1 ; r1 = sum & 0xffff ROM:00000748 extu.l er1 ROM:0000074A add.l er1, er0 ; er0 += r1 ROM:0000074C mov.l er0, er6 ; er6 = er0 ROM:0000074E mov.w e6, r0 ; r0 = er6 >> 16 ROM:00000750 sub.w e0, e0 ; e0 = 0 ROM:00000752 add.l er0, er6 ROM:00000754 mov.w r6, r0 ROM:00000756 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00000756 ; End of function calcPacketCrc ROM:00000756 ROM:0000075A ROM:0000075A ; =============== S U B R O U T I N E ======================================= ROM:0000075A ROM:0000075A ROM:0000075A VECTOR_SCI3: ; DATA XREF: ROM:0000004Ao ROM:0000075A rte ROM:0000075A ; End of function VECTOR_SCI3 ROM:0000075A ROM:0000075C ROM:0000075C ; =============== S U B R O U T I N E ======================================= ROM:0000075C ROM:0000075C ROM:0000075C get_packet_data_pointer: ; CODE XREF: processSyncPacketFromGame+12p ROM:0000075C ; irCommsEventLoop+436p ... ROM:0000075C mov.w #TX_PACKET_payload, r0 ROM:00000760 rts ROM:00000760 ; End of function get_packet_data_pointer ROM:00000760 ROM:00000762 ROM:00000762 ; =============== S U B R O U T I N E ======================================= ROM:00000762 ROM:00000762 ROM:00000762 io_related_weirdness: ; CODE XREF: j_io_related_weirdnessj ROM:00000762 mov.b #3, r0l ROM:00000764 mov.b r0l, @IO_UNKNOWN_REG:16 ROM:00000768 mov.b #1, r0l ROM:0000076A mov.b r0l, @IO_PDR3:8 ROM:0000076C mov.b #5, r0l ROM:0000076E mov.b r0l, @IO_PCR3:8 ROM:00000770 rts ROM:00000770 ; End of function io_related_weirdness ROM:00000770 ROM:00000772 ROM:00000772 ; =============== S U B R O U T I N E ======================================= ROM:00000772 ROM:00000772 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000772 ROM:00000772 sendPacket: ; CODE XREF: irCommsEventLoop+14Ep ROM:00000772 ; irCommsEventLoop+394p ... ROM:00000772 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00000776 mov.b r0l, r5l ROM:00000778 mov.w #TX_PACKET_cmd, r6 ROM:0000077C mov.b r0h, @er6 ROM:0000077E mov.b r1l, @(1:16,er6) ROM:00000782 mov.l @CurrentSessionID:16, er1 ROM:00000788 mov.l er1, @(4:16,er6) ROM:0000078E sub.b r0h, r0h ROM:00000790 mov.b r0h, @(2:16,er6) ROM:00000794 mov.b r0h, @(3:16,er6) ROM:00000798 mov.b r5l, r1l ROM:0000079A extu.w r1 ROM:0000079C add.w #8, r1 ROM:000007A0 extu.l er1 ROM:000007A2 mov.w r6, r0 ROM:000007A4 jsr calcPacketCrc:24 ; (r0 = dataP, er1 = len) -> r0 ROM:000007A8 mov.w r0, e6 ROM:000007AA mov.b r0l, @(2:16,er6) ROM:000007AE mov.b r0h, r0l ROM:000007B0 sub.b r0h, r0h ROM:000007B2 mov.b r0l, @(3:16,er6) ROM:000007B6 add.b #8, r5l ROM:000007B8 sub.w r6, r6 ROM:000007BA bra loc_7C4:8 ROM:000007BC ; --------------------------------------------------------------------------- ROM:000007BC ROM:000007BC loc_7BC: ; CODE XREF: sendPacket+58j ROM:000007BC mov.b @(TX_PACKET_cmd,er6), r0l ROM:000007C0 bsr irTxByte:8 ; (r0l = byte), encrypts internally ROM:000007C2 inc.w #1, r6 ROM:000007C4 ROM:000007C4 loc_7C4: ; CODE XREF: sendPacket+48j ROM:000007C4 mov.b r5l, r0l ROM:000007C6 extu.w r0 ROM:000007C8 cmp.w r0, r6 ROM:000007CA bcs loc_7BC:8 ROM:000007CC ROM:000007CC wait_for_tx_end: ; CODE XREF: sendPacket+5Ej ROM:000007CC bld #2, @SCI_SSR3:8 ROM:000007D0 bcc wait_for_tx_end:8 ROM:000007D2 mov.w @TMRW_TCNT:16, r6 ROM:000007D6 ROM:000007D6 small_delay: ; CODE XREF: sendPacket+6Ej ROM:000007D6 mov.w @TMRW_TCNT:16, r0 ROM:000007DA sub.w r6, r0 ROM:000007DC cmp.w #2, r0 ROM:000007E0 bcs small_delay:8 ROM:000007E2 ROM:000007E2 drop_echo_char_if_any: ROM:000007E2 bld #6, @SCI_SSR3:8 ROM:000007E6 bcc loc_7EE:8 ROM:000007E8 mov.b @SCI_RDR3:8, r0l ROM:000007EA mov.b r0l, @LastRxedUnusedByte:16 ROM:000007EE ROM:000007EE loc_7EE: ; CODE XREF: sendPacket+74j ROM:000007EE jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000007EE ; End of function sendPacket ROM:000007EE ROM:000007F2 ROM:000007F2 ; =============== S U B R O U T I N E ======================================= ROM:000007F2 ROM:000007F2 ROM:000007F2 sciConfigureForIrDA: ; CODE XREF: configureIrdaAndIrRxTimer+2p ROM:000007F2 bset #6, @CKSTPR1:8 ROM:000007F6 mov.b #1, r0l ROM:000007F8 mov.b r0l, @SCI_SPCR:8 ROM:000007FA mov.b @SCI_SSR3:8, r0l ROM:000007FC and.b #0x84, r0l ROM:000007FE mov.b r0l, @SCI_SSR3:8 ROM:00000800 sub.b r0l, r0l ROM:00000802 mov.b r0l, @SCI_SEMR:8 ROM:00000804 mov.b r0l, @SCI_SCR3:8 ROM:00000806 mov.b r0l, @SCI_SMR3:8 ROM:00000808 mov.b r0l, @SCI_BRR3:8 ROM:0000080A mov.b #5, r0l ROM:0000080C ROM:0000080C loc_80C: ; CODE XREF: sciConfigureForIrDA+1Cj ROM:0000080C dec.b r0l ROM:0000080E bne loc_80C:8 ROM:00000810 mov.b #0x10, r0l ROM:00000812 mov.b r0l, @SCI_SCR3:8 ROM:00000814 mov.b #0x80, r0l ; 'Ç' ROM:00000816 mov.b r0l, @IrDA_IRCR:8 ROM:00000818 mov.b #0x11, r0l ROM:0000081A mov.b r0l, @SCI_SPCR:8 ROM:0000081C mov.b #0x30, r0l ; '0' ROM:0000081E mov.b r0l, @SCI_SCR3:8 ROM:00000820 rts ROM:00000820 ; End of function sciConfigureForIrDA ROM:00000820 ROM:00000822 ROM:00000822 ; =============== S U B R O U T I N E ======================================= ROM:00000822 ROM:00000822 ; (r0l = byte), encrypts internally ROM:00000822 ROM:00000822 irTxByte: ; CODE XREF: sendPacket+4Ep ROM:00000822 ; configureSciAndSendPingByte+52j ... ROM:00000822 mov.b r0l, r0h ROM:00000824 ROM:00000824 wait_tx_buf_space: ; CODE XREF: irTxByte+4j ROM:00000824 mov.b @SCI_SSR3:8, r0l ROM:00000826 bpl wait_tx_buf_space:8 ROM:00000828 xor.b #0xAA, r0h ROM:0000082A mov.b r0h, @SCI_TDR3:8 ROM:0000082C rts ROM:0000082C ; End of function irTxByte ROM:0000082C ROM:0000082E ROM:0000082E ; =============== S U B R O U T I N E ======================================= ROM:0000082E ROM:0000082E ; Attributes: thunk ROM:0000082E ROM:0000082E j_io_related_weirdness: ; CODE XREF: ENTRY+C4p ROM:0000082E jmp io_related_weirdness:24 ROM:0000082E ; End of function j_io_related_weirdness ROM:0000082E ROM:00000832 ROM:00000832 ; =============== S U B R O U T I N E ======================================= ROM:00000832 ROM:00000832 ROM:00000832 configureIrdaAndIrRxTimer: ; CODE XREF: configureSciAndSendPingBytep ROM:00000832 push.w r6 ROM:00000834 bsr sciConfigureForIrDA:8 ROM:00000836 mov.w #check_some_rtc_set_bit_and_maybe_wait, r6 ROM:0000083A jsr @er6 ROM:0000083C jsr @er6 ROM:0000083E sub.b r0l, r0l ROM:00000840 mov.b r0l, @IO_PDR3:8 ROM:00000842 jsr @er6 ROM:00000844 jsr @er6 ROM:00000846 bset #6, @CKSTPR2:8 ROM:0000084A mov.b @TMRW_TCRW:16, r0l ROM:0000084E and.b #0x8F, r0l ; TMRW uses phiW as source clock ROM:00000850 or.b #0x40, r0l ROM:00000852 mov.b r0l, @TMRW_TCRW:16 ROM:00000856 mov.w #TMRW_TCRW, r0 ROM:0000085A bclr #7, @er0 ; TMRW free running (not reset when reaching GRA) ROM:0000085E mov.b #lo8(TMRW_TIERW), r0l ROM:00000860 bclr #0, @er0 ROM:00000864 mov.b #lo8(TMRW_TMRW), r0l ROM:00000866 bset #7, @er0 ROM:0000086A mov.b @SCI_SSR3:8, r6l ROM:0000086C and.b #0xC4, r6l ROM:0000086E mov.b r6l, @SCI_SSR3:8 ROM:00000870 bld #6, @SCI_SSR3:8 ROM:00000874 bcc loc_87C:8 ROM:00000876 mov.b @SCI_RDR3:8, r0l ROM:00000878 mov.b r0l, @LastRxedUnusedByte:16 ROM:0000087C ROM:0000087C loc_87C: ; CODE XREF: configureIrdaAndIrRxTimer+42j ROM:0000087C pop.w r6 ROM:0000087E rts ROM:0000087E ; End of function configureIrdaAndIrRxTimer ROM:0000087E ROM:00000880 ROM:00000880 ; =============== S U B R O U T I N E ======================================= ROM:00000880 ROM:00000880 ROM:00000880 configureSciAndSendPingByte: ; CODE XREF: goToConnectionMicroApp+60p ROM:00000880 bsr configureIrdaAndIrRxTimer:8 ROM:00000882 sub.b r0l, r0l ROM:00000884 mov.b r0l, @commsErrorMessageId:16 ROM:00000888 mov.l @RandomSeed:16, er1 ROM:0000088E mov.l er1, @SuggestedOurSideSessionId:16 ROM:00000894 mov.l @SuggestedOurSideSessionId:16, er1 ROM:0000089A mov.l er1, @CurrentSessionID:16 ROM:000008A0 mov.b #1, r0h ROM:000008A2 mov.b r0h, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:000008A2 ; 2 - master to another walker ROM:000008A2 ; 3 - slave to game / another walker ROM:000008A6 mov.b r0l, @numTimesWeSentIrAdv:16 ROM:000008AA mov.b r0l, @NumPingsSent:16 ROM:000008AE mov.b #0xFF, r0h ROM:000008B0 mov.b r0h, @REQUESTED_POKEMON_ACTION_TYPE:16 ROM:000008B4 mov.w #bool_got_at_least_one_packet, r1 ; used to decide which error message to show on comms failure ROM:000008B8 bclr #0, @er1 ROM:000008BC mov.b r0l, @NumBytesRxedsoFar:16 ROM:000008C0 mov.b r0l, @byte_FFF8C1:16 ROM:000008C4 mov.w @TMRW_TCNT:16, e0 ROM:000008C8 mov.w e0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:000008CC mov.b r0l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:000008CC ; 2 - read peer's animated poke sprite to our eeprom ROM:000008CC ; 3 - write our rendered name image to slave's eeprom ROM:000008CC ; 4 - read peer's rendered name image to our eeprom ROM:000008CC ; 5 - write current team data to slave's eeprom ROM:000008CC ; 6 - read current team data to slave's eeprom ROM:000008CC ; ROM:000008CC ; ROM:000008CC ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:000008D0 mov.b #0xFC, r0l ; 'n' ROM:000008D2 jmp irTxByte:24 ; (r0l = byte), encrypts internally ROM:000008D2 ; End of function configureSciAndSendPingByte ROM:000008D2 ROM:000008D6 ROM:000008D6 ; =============== S U B R O U T I N E ======================================= ROM:000008D6 ROM:000008D6 ROM:000008D6 irCommsEventLoop: ; DATA XREF: goToConnectionMicroApp+64o ROM:000008D6 ; sleepModeEventLoop+5Co ROM:000008D6 ROM:000008D6 rxedSessionId = -8 ROM:000008D6 ROM:000008D6 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000008DA sub.w #0xA, r7 ROM:000008DE mov.w #8, e5 ROM:000008E2 mov.w #0xB800, r6 ROM:000008E6 jsr wdt_maybe_pet:24 ROM:000008EA mov.b @SCI_SSR3:8, r0l ROM:000008EC and.b #0xC4, r0l ROM:000008EE mov.b r0l, @SCI_SSR3:8 ROM:000008F0 mov.b @NumBytesRxedsoFar:16, r5l ROM:000008F4 bld #6, @SCI_SSR3:8 ROM:000008F8 bcc no_byte_in_rx_buffer:8 ROM:000008FA cmp.b #0x88, r5l ; 'ê' ROM:000008FC bcs have_buffer_space:8 ROM:000008FE ROM:000008FE no_more_buffer_space: ROM:000008FE mov.b @SCI_RDR3:8, r0l ROM:00000900 mov.b r0l, @LastRxedUnusedByte:16 ROM:00000904 mov.b #8, r0l ; "Cannot connect" ROM:00000906 mov.b r0l, @commsErrorMessageId:16 ROM:0000090A jmp loc_A74:24 ROM:0000090E ; --------------------------------------------------------------------------- ROM:0000090E ROM:0000090E have_buffer_space: ; CODE XREF: irCommsEventLoop+26j ROM:0000090E mov.b @NumBytesRxedsoFar:16, r0l ROM:00000912 inc.b r0l ROM:00000914 mov.b r0l, @NumBytesRxedsoFar:16 ROM:00000918 dec.b r0l ROM:0000091A extu.w r0 ROM:0000091C mov.b @SCI_RDR3:8, r1l ROM:0000091E xor.b #0xAA, r1l ROM:00000920 mov.b r1l, @(TX_PACKET_cmd,er0) ROM:00000924 mov.w @TMRW_TCNT:16, r0 ROM:00000928 mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:0000092C jmp out:24 ROM:00000930 ; --------------------------------------------------------------------------- ROM:00000930 ROM:00000930 no_byte_in_rx_buffer: ; CODE XREF: irCommsEventLoop+22j ROM:00000930 mov.w @TMRW_TCNT:16, e6 ROM:00000934 mov.w @TimeWhenLAstByteRxed:16, r0 ; as per TMRW ROM:00000938 sub.w r0, e6 ROM:0000093A cmp.w #4, e6 ROM:0000093E bls out:16 ROM:00000942 cmp.w #3200, e6 ROM:00000946 bls probably_process_packet:16 ROM:0000094A mov.b @numTimesWeSentIrAdv:16, r0l ROM:0000094E inc.b r0l ROM:00000950 mov.b r0l, @numTimesWeSentIrAdv:16 ROM:00000954 mov.b @ourPeerRole:16, r0l ; 1 - establishing (starts here) ROM:00000954 ; 2 - master to another walker ROM:00000954 ; 3 - slave to game / another walker ROM:00000958 cmp.b #3, r0l ROM:0000095A bcc loc_964:8 ROM:0000095C mov.b @numTimesWeSentIrAdv:16, r0l ROM:00000960 cmp.b #0x14, r0l ROM:00000962 bcs loc_980:8 ROM:00000964 ROM:00000964 loc_964: ; CODE XREF: irCommsEventLoop+84j ROM:00000964 mov.b @bool_got_at_least_one_packet:16, r0l ; used to decide which error message to show on comms failure ROM:00000968 bld #0, r0l ROM:0000096A bcc loc_976:8 ROM:0000096C mov.b #2, r0l ; "Cannot complete this Connection" ROM:0000096E mov.b r0l, @commsErrorMessageId:16 ROM:00000972 jmp loc_A74:24 ROM:00000976 ; --------------------------------------------------------------------------- ROM:00000976 ROM:00000976 loc_976: ; CODE XREF: irCommsEventLoop+94j ROM:00000976 mov.b #1, r0l ; "No trainer found" ROM:00000978 mov.b r0l, @commsErrorMessageId:16 ROM:0000097C jmp loc_A74:24 ROM:00000980 ; --------------------------------------------------------------------------- ROM:00000980 ROM:00000980 loc_980: ; CODE XREF: irCommsEventLoop+8Cj ROM:00000980 jsr rand:24 ROM:00000984 mov.b #5, r2l ROM:00000986 ROM:00000986 loc_986: ; CODE XREF: irCommsEventLoop+B4j ROM:00000986 shlr.l er0 ROM:00000988 dec.b r2l ROM:0000098A bgt loc_986:8 ROM:0000098C and.w #0xF, r0 ROM:00000990 mov.w #0x60, e0 ; '`' ROM:00000994 mulxu.w e0, er0 ROM:00000996 mov.w r0, e6 ROM:00000998 mov.w @TMRW_TCNT:16, r0 ROM:0000099C mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:000009A0 ROM:000009A0 loc_9A0: ; CODE XREF: irCommsEventLoop+D6j ROM:000009A0 mov.w @TMRW_TCNT:16, r0 ROM:000009A4 mov.w @TimeWhenLAstByteRxed:16, e0 ; as per TMRW ROM:000009A8 sub.w e0, r0 ROM:000009AA cmp.w e6, r0 ROM:000009AC bcs loc_9A0:8 ROM:000009AE mov.b #1, r0l ROM:000009B0 mov.b r0l, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:000009B0 ; 2 - master to another walker ROM:000009B0 ; 3 - slave to game / another walker ROM:000009B4 mov.b #0xFC, r0l ; 'n' ROM:000009B6 jsr irTxByte:24 ; (r0l = byte), encrypts internally ROM:000009BA mov.w @TMRW_TCNT:16, e6 ROM:000009BE rotl.w e6 ROM:000009C0 rotl.w e6 ROM:000009C2 and.w #1, e6 ROM:000009C6 mov.w e6, r0 ROM:000009C8 jsr screenShenenigans:24 ROM:000009CC mov.w @TMRW_TCNT:16, r0 ROM:000009D0 mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:000009D4 jmp out:24 ROM:000009D8 ; --------------------------------------------------------------------------- ROM:000009D8 ROM:000009D8 probably_process_packet: ; CODE XREF: irCommsEventLoop+70j ROM:000009D8 mov.b r5l, r5l ; check how many bytes RXed so far ROM:000009DA beq out:16 ROM:000009DE mov.w #bool_got_at_least_one_packet, r0 ; used to decide which error message to show on comms failure ROM:000009E2 bset #0, @er0 ROM:000009E6 mov.b @NumBytesRxedsoFar:16, r0l ROM:000009EA cmp.b #1, r0l ROM:000009EC bne rxed_more_than_one_byte:8 ROM:000009EE sub.b r0l, r0l ROM:000009F0 mov.b r0l, @NumBytesRxedsoFar:16 ROM:000009F4 mov.b @TX_PACKET_cmd:16, r0l ROM:000009F8 cmp.b #0xFC, r0l ; 'n' ROM:000009FA bne out:16 ROM:000009FE ROM:000009FE we_got_announcement_from_another_pokewalker: ; 1 - establishing (starts here) ROM:000009FE mov.b @ourPeerRole:16, r0l ; 2 - master to another walker ROM:000009FE ; 3 - slave to game / another walker ROM:00000A02 cmp.b #1, r0l ROM:00000A04 beq we_were_adevrtising_and_heard_another_waker:8 ROM:00000A06 cmp.b #2, r0l ROM:00000A08 beq out:16 ROM:00000A0C cmp.b #4, r0l ROM:00000A0E beq out:16 ROM:00000A12 cmp.b #3, r0l ROM:00000A14 jmp out:24 ROM:00000A18 ; --------------------------------------------------------------------------- ROM:00000A18 ROM:00000A18 we_were_adevrtising_and_heard_another_waker: ; CODE XREF: irCommsEventLoop+12Ej ROM:00000A18 mov.b #2, r0l ROM:00000A1A mov.b r0l, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:00000A1A ; 2 - master to another walker ROM:00000A1A ; 3 - slave to game / another walker ROM:00000A1E mov.b r0l, r1l ROM:00000A20 mov.w #0xFA00, r0 ROM:00000A24 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000A28 jmp out:24 ROM:00000A2C ; --------------------------------------------------------------------------- ROM:00000A2C ROM:00000A2C rxed_more_than_one_byte: ; CODE XREF: irCommsEventLoop+116j ROM:00000A2C mov.w #TX_PACKET_cmd, r5 ROM:00000A30 mov.b @(3:16,er5), r0h ; crc byte 1 ROM:00000A34 sub.b r0l, r0l ROM:00000A36 mov.b @(2:16,er5), r1l ; crc byte 0 ROM:00000A3A extu.w r1 ROM:00000A3C add.w r0, r1 ROM:00000A3E mov.w r1, e6 ; reconstitute the CRC ROM:00000A40 mov.b r0l, @(2:16,er5) ; zero the crc bytes in the packet ROM:00000A44 mov.b r0l, @(3:16,er5) ROM:00000A48 sub.l er1, er1 ROM:00000A4A mov.b @NumBytesRxedsoFar:16, r1l ROM:00000A4E mov.w r5, r0 ROM:00000A50 jsr calcPacketCrc:24 ; (r0 = dataP, er1 = len) -> r0 ROM:00000A54 cmp.w r0, e6 ROM:00000A56 beq rxed_crc_matches_calculated_crc:8 ROM:00000A58 ROM:00000A58 rxed_corrupted_packet: ROM:00000A58 sub.b r0l, r0l ROM:00000A5A mov.b r0l, @NumBytesRxedsoFar:16 ROM:00000A5E mov.b @NumPingsSent:16, r0l ROM:00000A62 inc.b r0l ROM:00000A64 mov.b r0l, @NumPingsSent:16 ROM:00000A68 cmp.b #0x14, r0l ROM:00000A6A bcs out:16 ROM:00000A6E mov.b #2, r0l ; "Cannot connect" ROM:00000A70 mov.b r0l, @commsErrorMessageId:16 ROM:00000A74 ROM:00000A74 loc_A74: ; CODE XREF: irCommsEventLoop+34j ROM:00000A74 ; irCommsEventLoop+9Cj ... ROM:00000A74 jsr maybe_shutDownIr_then_performActionAsRequested:24 ROM:00000A78 jmp out:24 ROM:00000A7C ; --------------------------------------------------------------------------- ROM:00000A7C ROM:00000A7C rxed_crc_matches_calculated_crc: ; CODE XREF: irCommsEventLoop+180j ROM:00000A7C mov.l @(4:16,er5), er0 ; session id ROM:00000A82 mov.l er0, @(0xA+rxedSessionId:16,sp) ROM:00000A88 mov.b @(1:16,er5), r4l ; direction byte ROM:00000A8C mov.b @er5, r3l ; command byte ROM:00000A8E mov.b @NumBytesRxedsoFar:16, r4h ROM:00000A92 add.b #0xF8, r4h ; '°' ; RxLen - 8 = payloadLen ROM:00000A94 mov.w e5, r5 ROM:00000A96 add.w #TX_PACKET_cmd, r5 ROM:00000A9A cmp.b #0xF8, r3l ; '°' ROM:00000A9C bcc session_id_checked:8 ; taken if less than 0xF8 ROM:00000A9E ROM:00000A9E packet_shoudl_have_valid_Session_id: ROM:00000A9E mov.l @CurrentSessionID:16, er1 ROM:00000AA4 cmp.l er1, er0 ROM:00000AA6 bne loc_182E:16 ; taken if session id mismatch ROM:00000AAA mov.b @ourPeerRole:16, r0l ; 1 - establishing (starts here) ROM:00000AAA ; 2 - master to another walker ROM:00000AAA ; 3 - slave to game / another walker ROM:00000AAE cmp.b #3, r0l ROM:00000AB0 bcs loc_182E:16 ROM:00000AB4 ROM:00000AB4 session_id_checked: ; CODE XREF: irCommsEventLoop+1C6j ROM:00000AB4 mov.w #0xED, e3 ; 'f' ROM:00000AB8 mov.w #0x68, e4 ; 'h' ROM:00000ABC mov.w #0x1ED, e6 ROM:00000AC0 sub.b r3h, r3h ROM:00000AC2 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00000AC2 ; gifted items view: this is item number that has focus and arrow ROM:00000AC2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00000AC2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00000AC2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000AC6 bld #0, r0l ROM:00000AC8 bst #0, r3h ROM:00000ACA mov.b r4l, r0h ROM:00000ACC sub.b r0l, r0l ROM:00000ACE mov.w r0, r1 ROM:00000AD0 mov.b r4h, r0l ROM:00000AD2 extu.w r0 ROM:00000AD4 mov.w r0, e2 ROM:00000AD6 mov.w @PeerPlayEepromXferSizeLeft:16, e1 ROM:00000ADA mov.b r3l, r0l ROM:00000ADC cmp.b #0xFA, r0l ; '·' ; ROM:00000ADC ; RIGHT NOW: ROM:00000ADC ; r1 is direction << 8 ROM:00000ADC ; r3l is command byte ROM:00000ADC ; r4l is direction byte ROM:00000ADC ; r4h, r0, e2 is payload len ROM:00000ADC ; r5 is payload pointer ROM:00000ADC ; r6 = 0xB800 ROM:00000ADC ; e1 = PeerPlayEepromXferSizeLeft ROM:00000ADC ; e3 = 0xED ROM:00000ADC ; e4 = 0x68 ROM:00000ADC ; e5 = 8 ROM:00000ADC ; e6 = 0x1ED ROM:00000ADE beq rxed_0xFA:16 ROM:00000AE2 cmp.b #0xF4, r0l ; '(' ROM:00000AE4 beq rxed_0xF4:16 ROM:00000AE8 cmp.b #0xF8, r0l ; '°' ROM:00000AEA beq rxed_0xF8:16 ROM:00000AEE cmp.b #0x10, r0l ROM:00000AF0 beq rxed_0x10:16 ROM:00000AF4 cmp.b #0x12, r0l ROM:00000AF6 beq rxed_0x12:16 ROM:00000AFA cmp.b #0x14, r0l ROM:00000AFC beq rxed_0x14:16 ROM:00000B00 cmp.b #0x16, r0l ROM:00000B02 beq rxed_0x16:16 ROM:00000B06 cmp.b #0x1C, r0l ROM:00000B08 beq rxed_0x1C:16 ROM:00000B0C cmp.b #0x20, r0l ; ' ' ROM:00000B0E beq rxed_0x20:16 ROM:00000B12 cmp.b #0x32, r0l ; '2' ROM:00000B14 beq rxed_0x32:16 ROM:00000B18 cmp.b #0x36, r0l ; '6' ROM:00000B1A beq rxed_0x36:16 ROM:00000B1E cmp.b #0x38, r0l ; '8' ROM:00000B20 beq rxed_0x38:16 ROM:00000B24 cmp.b #0x40, r0l ; '@' ROM:00000B26 beq rxed_0x40:16 ROM:00000B2A cmp.b #0x44, r0l ; 'D' ROM:00000B2C beq rxed_0x44:16 ROM:00000B30 cmp.b #0x4E, r0l ; 'N' ROM:00000B32 beq rxed_0x4E:16 ROM:00000B36 cmp.b #0x52, r0l ; 'R' ROM:00000B38 beq rxed_0x52:16 ROM:00000B3C cmp.b #0x5A, r0l ; 'Z' ROM:00000B3E beq rxed_0x5A:16 ROM:00000B42 cmp.b #0x56, r0l ; 'V' ROM:00000B44 beq rxed_0x56:16 ROM:00000B48 cmp.b #0x60, r0l ; '`' ROM:00000B4A beq rxed_0x60:16 ROM:00000B4E cmp.b #0x66, r0l ; 'f' ROM:00000B50 beq rxed_0x66:16 ROM:00000B54 cmp.b #0x64, r0l ; 'd' ROM:00000B56 beq rxed_0x64:16 ROM:00000B5A cmp.b #0xC0, r0l ; '+' ROM:00000B5C beq rxed_0xC0:16 ROM:00000B60 cmp.b #0xD0, r0l ; '-' ROM:00000B62 beq rxed_0xD0:16 ROM:00000B66 cmp.b #0xC2, r0l ; '-' ROM:00000B68 beq mark_have_event_poke:16 ROM:00000B6C cmp.b #0xD2, r0l ; '-' ROM:00000B6E beq loc_119C:16 ROM:00000B72 cmp.b #0xC4, r0l ; '-' ROM:00000B74 beq mark_have_event_item_RXed:16 ROM:00000B78 cmp.b #0xD4, r0l ; '+' ROM:00000B7A beq loc_11D6:16 ROM:00000B7E cmp.b #0xC6, r0l ; '¦' ROM:00000B80 beq handle_event_route_received:16 ROM:00000B84 cmp.b #0xD6, r0l ; '+' ROM:00000B86 beq loc_120E:16 ROM:00000B8A cmp.b #0xD8, r0l ; '+' ROM:00000B8C beq rxed_0xD8:16 ROM:00000B90 cmp.b #0x24, r0l ; '$' ROM:00000B92 beq rxed_0x24:16 ROM:00000B96 cmp.b #0x80, r0l ; 'Ç' ROM:00000B98 beq rxed_0x00_or_0x80:16 ROM:00000B9C cmp.b #0, r0l ROM:00000B9E beq rxed_0x00_or_0x80:16 ROM:00000BA2 cmp.b #0x82, r0l ; 'é' ROM:00000BA4 beq rxed_0x02_or_0x82:16 ROM:00000BA8 cmp.b #2, r0l ROM:00000BAA beq rxed_0x02_or_0x82:16 ROM:00000BAE cmp.b #4, r0l ROM:00000BB0 beq rxed_0x04:16 ; handle replies to writes we do unto a peer ROM:00000BB4 cmp.b #0xA6, r0l ; 'ª' ROM:00000BB6 beq rxed_A0_A2_A4_A6:16 ROM:00000BBA cmp.b #0xA4, r0l ; 'ñ' ROM:00000BBC beq rxed_A0_A2_A4_A6:16 ROM:00000BC0 cmp.b #0xA2, r0l ; 'ó' ROM:00000BC2 beq rxed_A0_A2_A4_A6:16 ROM:00000BC6 cmp.b #0xA0, r0l ; 'á' ROM:00000BC8 beq rxed_A0_A2_A4_A6:16 ROM:00000BCC cmp.b #0xAE, r0l ; '«' ROM:00000BCE beq rxed_A8_AA_AC_AE:16 ROM:00000BD2 cmp.b #0xAC, r0l ; '¼' ROM:00000BD4 beq rxed_A8_AA_AC_AE:16 ROM:00000BD8 cmp.b #0xAA, r0l ; '¬' ROM:00000BDA beq rxed_A8_AA_AC_AE:16 ROM:00000BDE cmp.b #0xA8, r0l ; '¿' ROM:00000BE0 beq rxed_A8_AA_AC_AE:16 ROM:00000BE4 cmp.b #0xBE, r0l ; '+' ROM:00000BE6 beq rxed_B8_BA_BC_BE:16 ROM:00000BEA cmp.b #0xBC, r0l ; '+' ROM:00000BEC beq rxed_B8_BA_BC_BE:16 ROM:00000BF0 cmp.b #0xBA, r0l ; '¦' ROM:00000BF2 beq rxed_B8_BA_BC_BE:16 ROM:00000BF6 cmp.b #0xB8, r0l ; '+' ROM:00000BF8 beq rxed_B8_BA_BC_BE:16 ROM:00000BFC cmp.b #0x9E, r0l ; 'P' ROM:00000BFE beq rxed_0x9E:16 ROM:00000C02 cmp.b #0x9C, r0l ; '£' ROM:00000C04 beq rxed_0x9C:16 ROM:00000C08 cmp.b #0xF0, r0l ; '=' ROM:00000C0A beq loc_14C4:16 ROM:00000C0E cmp.b #0xFE, r0l ; '¦' ROM:00000C10 beq rxed_0xFE:16 ROM:00000C14 cmp.b #0x2A, r0l ; '*' ROM:00000C16 beq rxed_0x2A:16 ROM:00000C1A cmp.b #0x2C, r0l ; ',' ROM:00000C1C beq rxed_0x2C:16 ROM:00000C20 cmp.b #0xC, r0l ROM:00000C22 beq rxed_0x0C:16 ROM:00000C26 cmp.b #0xE, r0l ROM:00000C28 beq rxed_0x0E:16 ROM:00000C2C cmp.b #0xA, r0l ROM:00000C2E beq rxed_0x0A:16 ROM:00000C32 cmp.b #6, r0l ROM:00000C34 bne loc_182E:16 ROM:00000C38 jmp rxed_0x06:24 ROM:00000C3C ; --------------------------------------------------------------------------- ROM:00000C3C ROM:00000C3C rxed_0xFA: ; CODE XREF: irCommsEventLoop+208j ROM:00000C3C cmp.b #1, r4l ; direction_byte ROM:00000C3E beq rxed_0xFA_dir_1_or_2:8 ROM:00000C40 cmp.b #2, r4l ROM:00000C42 bne loc_CCE:16 ROM:00000C46 ROM:00000C46 rxed_0xFA_dir_1_or_2: ; CODE XREF: irCommsEventLoop+368j ROM:00000C46 mov.b @ourPeerRole:16, r0l ; 1 - establishing (starts here) ROM:00000C46 ; 2 - master to another walker ROM:00000C46 ; 3 - slave to game / another walker ROM:00000C4A cmp.b #1, r0l ROM:00000C4C beq role_Was_1:8 ROM:00000C4E cmp.b #4, r0l ROM:00000C50 beq loc_C88:8 ROM:00000C52 cmp.b #3, r0l ROM:00000C54 beq loc_C88:8 ROM:00000C56 cmp.b #2, r0l ROM:00000C58 bne loc_182E:16 ; roke was invalid ROM:00000C5C bra loc_C88:8 ROM:00000C5E ; --------------------------------------------------------------------------- ROM:00000C5E ROM:00000C5E role_Was_1: ; CODE XREF: irCommsEventLoop+376j ROM:00000C5E mov.b #3, r0l ROM:00000C60 mov.b r0l, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:00000C60 ; 2 - master to another walker ROM:00000C60 ; 3 - slave to game / another walker ROM:00000C64 mov.b #2, r1l ROM:00000C66 mov.w #0xF800, r0 ROM:00000C6A jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000C6E mov.l @(0xA+rxedSessionId:16,sp), er0 ROM:00000C74 mov.l @SuggestedOurSideSessionId:16, er1 ROM:00000C7A xor.l er1, er0 ROM:00000C7E mov.l er0, @CurrentSessionID:16 ROM:00000C84 jmp loc_182E:24 ROM:00000C88 ; --------------------------------------------------------------------------- ROM:00000C88 ROM:00000C88 loc_C88: ; CODE XREF: irCommsEventLoop+37Aj ROM:00000C88 ; irCommsEventLoop+37Ej ... ROM:00000C88 jsr rand:24 ROM:00000C8C mov.b #5, r2l ROM:00000C8E ROM:00000C8E loc_C8E: ; CODE XREF: irCommsEventLoop+3BCj ROM:00000C8E shlr.l er0 ROM:00000C90 dec.b r2l ROM:00000C92 bgt loc_C8E:8 ROM:00000C94 and.w #0xF, r0 ROM:00000C98 mov.w #0x60, e0 ; '`' ROM:00000C9C mulxu.w e0, er0 ROM:00000C9E mov.w r0, e6 ROM:00000CA0 mov.w @TMRW_TCNT:16, r0 ROM:00000CA4 mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:00000CA8 ROM:00000CA8 loc_CA8: ; CODE XREF: irCommsEventLoop+3DEj ROM:00000CA8 mov.w @TMRW_TCNT:16, r0 ROM:00000CAC mov.w @TimeWhenLAstByteRxed:16, e0 ; as per TMRW ROM:00000CB0 sub.w e0, r0 ROM:00000CB2 cmp.w e6, r0 ROM:00000CB4 bcs loc_CA8:8 ROM:00000CB6 mov.b #1, r0l ROM:00000CB8 mov.b r0l, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:00000CB8 ; 2 - master to another walker ROM:00000CB8 ; 3 - slave to game / another walker ROM:00000CBC mov.b #0xFC, r0l ; 'n' ROM:00000CBE jsr irTxByte:24 ; (r0l = byte), encrypts internally ROM:00000CC2 mov.w @TMRW_TCNT:16, r0 ROM:00000CC6 mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:00000CCA jmp loc_182E:24 ROM:00000CCE ; --------------------------------------------------------------------------- ROM:00000CCE ROM:00000CCE loc_CCE: ; CODE XREF: irCommsEventLoop+36Cj ROM:00000CCE mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000CD0 mov.b r0l, @commsErrorMessageId:16 ROM:00000CD4 jmp rxed_0xF4:24 ROM:00000CD8 ; --------------------------------------------------------------------------- ROM:00000CD8 ROM:00000CD8 rxed_0xF8: ; CODE XREF: irCommsEventLoop+214j ROM:00000CD8 cmp.b #2, r4l ROM:00000CDA beq rxed_0xF8_dir_2:8 ROM:00000CDC mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000CDE mov.b r0l, @commsErrorMessageId:16 ROM:00000CE2 jmp rxed_0xF4:24 ROM:00000CE6 ; --------------------------------------------------------------------------- ROM:00000CE6 ROM:00000CE6 rxed_0xF8_dir_2: ; CODE XREF: irCommsEventLoop+404j ROM:00000CE6 mov.b @ourPeerRole:16, r0l ; 1 - establishing (starts here) ROM:00000CE6 ; 2 - master to another walker ROM:00000CE6 ; 3 - slave to game / another walker ROM:00000CEA cmp.b #3, r0l ROM:00000CEC bcc loc_182E:16 ROM:00000CF0 mov.l @(0xA+rxedSessionId:16,sp), er0 ROM:00000CF6 mov.l @SuggestedOurSideSessionId:16, er1 ROM:00000CFC xor.l er1, er0 ROM:00000D00 mov.l er0, @CurrentSessionID:16 ROM:00000D06 mov.b #4, r0l ROM:00000D08 mov.b r0l, @ourPeerRole:16 ; 1 - establishing (starts here) ROM:00000D08 ; 2 - master to another walker ROM:00000D08 ; 3 - slave to game / another walker ROM:00000D0C jsr get_packet_data_pointer:24 ROM:00000D10 mov.w r0, r1 ROM:00000D12 mov.w e4, e1 ROM:00000D14 mov.w e6, e0 ROM:00000D16 mov.w e3, r0 ROM:00000D18 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00000D18 ; ROM:00000D18 ; data is stored in two provided locations and read to RAM ROM:00000D18 ; each location includes a checksum right after the data (not inluded in length) ROM:00000D18 ; ROM:00000D18 ; if only one location has checksum-valid data, other is replaced with it ROM:00000D18 ; ROM:00000D18 ; if both appear valid, #0 is assumed dominant ROM:00000D18 ; ROM:00000D18 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00000D1C mov.b #2, r1l ROM:00000D1E mov.w #0x1068, r0 ROM:00000D22 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000D26 mov.w #gCurSubstateY, r0 ; 0xfff7ce ROM:00000D2A bclr #0, @er0 ROM:00000D2E jmp loc_182E:24 ROM:00000D32 ; --------------------------------------------------------------------------- ROM:00000D32 ROM:00000D32 rxed_0x10: ; CODE XREF: irCommsEventLoop+21Aj ROM:00000D32 mov.w #gCurSubstateY, r0 ; Substate: ROM:00000D32 ; gifted items view: this is item number that has focus and arrow ROM:00000D32 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00000D32 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00000D32 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00000D36 bset #0, @er0 ROM:00000D3A jsr get_packet_data_pointer:24 ROM:00000D3E mov.w r0, r5 ; 0xf8d6 ROM:00000D40 mov.w #sometimes_new_rxed_data_for_0xED, r1 ; from ??? and from peer play peer ROM:00000D44 mov.w #0x68, r2 ; 'h' ROM:00000D48 jsr memoryCopy:24 ; (r0 = src, r1 = dst, r2 = len) ROM:00000D4C mov.w e4, e1 ; 0x68 ROM:00000D4E mov.w e6, e0 ; 0x1ED ROM:00000D50 mov.w e3, r0 ; 0xED ROM:00000D52 mov.w r5, r1 ROM:00000D54 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00000D54 ; ROM:00000D54 ; data is stored in two provided locations and read to RAM ROM:00000D54 ; each location includes a checksum right after the data (not inluded in length) ROM:00000D54 ; ROM:00000D54 ; if only one location has checksum-valid data, other is replaced with it ROM:00000D54 ; ROM:00000D54 ; if both appear valid, #0 is assumed dominant ROM:00000D54 ; ROM:00000D54 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00000D58 mov.b @(0x5B:16,er5), r0l ; pw status byte ROM:00000D5C bld #0, r0l ROM:00000D5E bcs this_walker_is_paired_to_game:8 ROM:00000D60 mov.b #2, r1l ROM:00000D62 mov.w #0x1268, r0 ROM:00000D66 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000D6A mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000D6C mov.b r0l, @commsErrorMessageId:16 ROM:00000D70 jmp rxed_0xF4:24 ROM:00000D74 ; --------------------------------------------------------------------------- ROM:00000D74 ROM:00000D74 this_walker_is_paired_to_game: ; CODE XREF: irCommsEventLoop+488j ROM:00000D74 mov.b @byte_FFF841:16, r0l ; remote's 0x5B byte ROM:00000D78 bld #0, r0l ROM:00000D7A bcs remote_walker_is_paired_to_game:8 ROM:00000D7C mov.b #2, r1l ROM:00000D7E mov.w #0x1268, r0 ROM:00000D82 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000D86 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000D88 mov.b r0l, @commsErrorMessageId:16 ROM:00000D8C jmp rxed_0xF4:24 ROM:00000D90 ; --------------------------------------------------------------------------- ROM:00000D90 ROM:00000D90 remote_walker_is_paired_to_game: ; CODE XREF: irCommsEventLoop+4A4j ROM:00000D90 bld #1, r0l ; remote's 0x5B byte still ROM:00000D92 bcs remote_has_poke:8 ROM:00000D94 mov.b #2, r1l ROM:00000D96 mov.w #0x1268, r0 ROM:00000D9A jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000D9E mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000DA0 mov.b r0l, @commsErrorMessageId:16 ROM:00000DA4 jmp rxed_0xF4:24 ROM:00000DA8 ; --------------------------------------------------------------------------- ROM:00000DA8 ROM:00000DA8 remote_has_poke: ; CODE XREF: irCommsEventLoop+4BCj ROM:00000DA8 mov.b @(0x5C:16,er5), r0l ROM:00000DAC mov.b @byte_FFF842:16, r0h ; remote's 0x5c ROM:00000DB0 cmp.b r0h, r0l ROM:00000DB2 beq proto_version_match:8 ROM:00000DB4 mov.b #2, r1l ROM:00000DB6 mov.w #0x1268, r0 ROM:00000DBA jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000DBE mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000DC0 mov.b r0l, @commsErrorMessageId:16 ROM:00000DC4 jmp rxed_0xF4:24 ROM:00000DC8 ; --------------------------------------------------------------------------- ROM:00000DC8 ROM:00000DC8 proto_version_match: ; CODE XREF: irCommsEventLoop+4DCj ROM:00000DC8 mov.b @byte_FFF844:16, r0l ; remotes' 0x5e ROM:00000DCC beq remotes_0x5e_is_zero:8 ROM:00000DCE mov.b #2, r1l ROM:00000DD0 mov.w #0x1268, r0 ROM:00000DD4 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000DD8 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000DDA mov.b r0l, @commsErrorMessageId:16 ROM:00000DDE jmp rxed_0xF4:24 ROM:00000DE2 ; --------------------------------------------------------------------------- ROM:00000DE2 ROM:00000DE2 remotes_0x5e_is_zero: ; CODE XREF: irCommsEventLoop+4F6j ROM:00000DE2 mov.b @(0x5B:16,er5), r0l ROM:00000DE6 bld #1, r0l ROM:00000DE8 bcs we_do_have_poke:8 ROM:00000DEA mov.b #2, r1l ROM:00000DEC mov.w #0x1268, r0 ROM:00000DF0 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000DF4 mov.b #4, r0l ; "No Pokemon held!" ROM:00000DF6 mov.b r0l, @commsErrorMessageId:16 ROM:00000DFA jmp rxed_0xF4:24 ROM:00000DFE ; --------------------------------------------------------------------------- ROM:00000DFE ROM:00000DFE we_do_have_poke: ; CODE XREF: irCommsEventLoop+512j ROM:00000DFE mov.w #unk_FFF7F6, r0 ; remote's unique id ROM:00000E02 jsr seeIfWeSawThisTrainerBefore:24 ; (r0 = u8[40]) //check if any trainer we've seen has same 40 bytes at offset8 into trainer info ROM:00000E06 mov.b r0l, r0l ROM:00000E08 beq can_connecto_to_this_peer:8 ROM:00000E0A mov.b #2, r1l ROM:00000E0C mov.w #0x1C00, r0 ROM:00000E10 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000E14 mov.b #5, r0l ; "Cannot connect to trainer again" ROM:00000E16 mov.b r0l, @commsErrorMessageId:16 ROM:00000E1A jmp rxed_0xF4:24 ROM:00000E1E ; --------------------------------------------------------------------------- ROM:00000E1E ROM:00000E1E can_connecto_to_this_peer: ; CODE XREF: irCommsEventLoop+532j ROM:00000E1E mov.b #2, r1l ROM:00000E20 mov.w #0x1268, r0 ROM:00000E24 jmp sendPacket_and_go_on:24 ROM:00000E28 ; --------------------------------------------------------------------------- ROM:00000E28 ROM:00000E28 rxed_0x12: ; CODE XREF: irCommsEventLoop+220j ROM:00000E28 jsr get_packet_data_pointer:24 ROM:00000E2C mov.w r0, r5 ROM:00000E2E mov.w #sometimes_new_rxed_data_for_0xED, r1 ; from ??? and from peer play peer ROM:00000E32 mov.w #0x68, r2 ; 'h' ROM:00000E36 jsr memoryCopy:24 ; (r0 = src, r1 = dst, r2 = len) ROM:00000E3A mov.w e4, e1 ROM:00000E3C mov.w e6, e0 ROM:00000E3E mov.w e3, r0 ROM:00000E40 mov.w r5, r1 ROM:00000E42 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00000E42 ; ROM:00000E42 ; data is stored in two provided locations and read to RAM ROM:00000E42 ; each location includes a checksum right after the data (not inluded in length) ROM:00000E42 ; ROM:00000E42 ; if only one location has checksum-valid data, other is replaced with it ROM:00000E42 ; ROM:00000E42 ; if both appear valid, #0 is assumed dominant ROM:00000E42 ; ROM:00000E42 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00000E46 mov.b @(0x5B:16,er5), r0l ROM:00000E4A bld #0, r0l ROM:00000E4C bcs loc_E58:8 ROM:00000E4E mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000E50 mov.b r0l, @commsErrorMessageId:16 ROM:00000E54 jmp rxed_0xF4:24 ROM:00000E58 ; --------------------------------------------------------------------------- ROM:00000E58 ROM:00000E58 loc_E58: ; CODE XREF: irCommsEventLoop+576j ROM:00000E58 mov.b @byte_FFF841:16, r0l ROM:00000E5C bld #0, r0l ROM:00000E5E bcs loc_E6A:8 ROM:00000E60 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000E62 mov.b r0l, @commsErrorMessageId:16 ROM:00000E66 jmp rxed_0xF4:24 ROM:00000E6A ; --------------------------------------------------------------------------- ROM:00000E6A ROM:00000E6A loc_E6A: ; CODE XREF: irCommsEventLoop+588j ROM:00000E6A bld #1, r0l ROM:00000E6C bcs loc_E78:8 ROM:00000E6E mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000E70 mov.b r0l, @commsErrorMessageId:16 ROM:00000E74 jmp rxed_0xF4:24 ROM:00000E78 ; --------------------------------------------------------------------------- ROM:00000E78 ROM:00000E78 loc_E78: ; CODE XREF: irCommsEventLoop+596j ROM:00000E78 mov.b @(0x5C:16,er5), r0l ROM:00000E7C mov.b @byte_FFF842:16, r0h ROM:00000E80 cmp.b r0h, r0l ROM:00000E82 beq loc_E8E:8 ROM:00000E84 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000E86 mov.b r0l, @commsErrorMessageId:16 ROM:00000E8A jmp rxed_0xF4:24 ROM:00000E8E ; --------------------------------------------------------------------------- ROM:00000E8E ROM:00000E8E loc_E8E: ; CODE XREF: irCommsEventLoop+5ACj ROM:00000E8E mov.b @byte_FFF844:16, r0l ROM:00000E92 beq loc_E9E:8 ROM:00000E94 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00000E96 mov.b r0l, @commsErrorMessageId:16 ROM:00000E9A jmp rxed_0xF4:24 ROM:00000E9E ; --------------------------------------------------------------------------- ROM:00000E9E ROM:00000E9E loc_E9E: ; CODE XREF: irCommsEventLoop+5BCj ROM:00000E9E mov.b @(0x5B:16,er5), r0l ROM:00000EA2 bld #1, r0l ROM:00000EA4 bcs loc_EB0:8 ROM:00000EA6 mov.b #4, r0l ; "No Pokemon held!" ROM:00000EA8 mov.b r0l, @commsErrorMessageId:16 ROM:00000EAC jmp rxed_0xF4:24 ROM:00000EB0 ; --------------------------------------------------------------------------- ROM:00000EB0 ROM:00000EB0 loc_EB0: ; CODE XREF: irCommsEventLoop+5CEj ROM:00000EB0 mov.w #unk_FFF7F6, r0 ROM:00000EB4 jsr seeIfWeSawThisTrainerBefore:24 ; (r0 = u8[40]) //check if any trainer we've seen has same 40 bytes at offset8 into trainer info ROM:00000EB8 mov.b r0l, r0l ROM:00000EBA beq we_are_master_and_we_can_peer_play_with_this_peer:8 ROM:00000EBC mov.b #2, r1l ROM:00000EBE mov.w #0x1C00, r0 ROM:00000EC2 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00000EC6 mov.b #5, r0l ; "Cannot connect to trainer again" ROM:00000EC8 mov.b r0l, @commsErrorMessageId:16 ROM:00000ECC jmp rxed_0xF4:24 ROM:00000ED0 ; --------------------------------------------------------------------------- ROM:00000ED0 ROM:00000ED0 we_are_master_and_we_can_peer_play_with_this_peer: ROM:00000ED0 ; CODE XREF: irCommsEventLoop+5E4j ROM:00000ED0 mov.w #0xF400, r5 ROM:00000ED4 mov.w #0x91BE, r0 ROM:00000ED8 mov.b #1, r1l ROM:00000EDA mov.b r1l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:00000EDA ; 2 - read peer's animated poke sprite to our eeprom ROM:00000EDA ; 3 - write our rendered name image to slave's eeprom ROM:00000EDA ; 4 - read peer's rendered name image to our eeprom ROM:00000EDA ; 5 - write current team data to slave's eeprom ROM:00000EDA ; 6 - read current team data to slave's eeprom ROM:00000EDA ; ROM:00000EDA ; ROM:00000EDA ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:00000EDE mov.w r0, @PeerPlayEepromXferLocalAddr:16 ROM:00000EE2 mov.w r5, @PeerPlayEepromXferRemoteAddr:16 ROM:00000EE6 mov.w #0x180, r0 ROM:00000EEA mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:00000EEE sub.b r0l, r0l ROM:00000EF0 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:00000EF4 mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:00000EF8 cmp.w #0x80, e6 ; 'Ç' ROM:00000EFC bls loc_1366:16 ROM:00000F00 jmp loc_1362:24 ROM:00000F04 ; --------------------------------------------------------------------------- ROM:00000F04 ROM:00000F04 rxed_0x14: ; CODE XREF: irCommsEventLoop+226j ROM:00000F04 mov.b r3h, r3h ROM:00000F06 beq loc_FDC:16 ROM:00000F0A jsr get_packet_data_pointer:24 ROM:00000F0E mov.w r0, e0 ROM:00000F10 mov.w #0x38, r1 ; '8' ROM:00000F14 mov.w #0xF6C0, r0 ROM:00000F18 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00000F1C mov.w #DECOMPRESSION_BUFFER, r4 ROM:00000F20 jsr get_packet_data_pointer:24 ROM:00000F24 mov.w r0, r5 ROM:00000F26 mov.l @stepCountTodaySoFar:16, er1 ROM:00000F2C mov.l er1, @er0 ROM:00000F30 mov.w @someWalkingRelatedState:16, e0 ; clamped to 9999 (what is this?) ROM:00000F34 mov.w e0, @(4:16,er0) ROM:00000F38 mov.w #0x8F00, r0 ROM:00000F3C mov.w #0x10, r1 ROM:00000F40 mov.w r4, e0 ROM:00000F42 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00000F46 mov.w #0x37, r0 ; '7' ROM:00000F4A add.w r5, r0 ROM:00000F4C mov.b @(0xE:16,er4), r1l ROM:00000F50 bld #0, r1l ROM:00000F52 bst #0, @er0 ROM:00000F56 mov.w @er4, r0 ROM:00000F58 mov.w r0, @(0xE:16,er5) ROM:00000F5C mov.b @(0xD:16,er4), r0l ROM:00000F60 and.b #0x1F, r0l ROM:00000F62 mov.b @(0x36:16,er5), r0h ROM:00000F66 and.b #0xE0, r0h ROM:00000F68 and.b #0x1F, r0l ROM:00000F6A or.b r0l, r0h ROM:00000F6C mov.b r0h, @(0x36:16,er5) ROM:00000F70 mov.b @(0xD:16,er4), r0l ROM:00000F74 rotl.b r0l ROM:00000F76 rotl.b r0l ROM:00000F78 rotl.b r0l ROM:00000F7A and.b #3, r0l ROM:00000F7C mov.b r0l, r1l ROM:00000F7E mov.w #0x36, r0 ; '6' ROM:00000F82 add.w r5, r0 ROM:00000F84 mov.w #0x102, r2 ROM:00000F88 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00000F8C mov.w #0x36, r0 ; '6' ROM:00000F90 add.w r5, r0 ROM:00000F92 mov.b @(0xE:16,er4), r1l ROM:00000F96 bld #1, r1l ROM:00000F98 bst #7, @er0 ROM:00000F9C mov.w e4, e1 ROM:00000F9E mov.w e6, e0 ; read 0xED/1ED data ROM:00000FA0 mov.w e3, r0 ROM:00000FA2 mov.w #RamCache_ED_data, r1 ROM:00000FA6 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00000FA6 ; ROM:00000FA6 ; data is stored in two provided locations and read to RAM ROM:00000FA6 ; each location includes a checksum right after the data (not inluded in length) ROM:00000FA6 ; ROM:00000FA6 ; if only one location has checksum-valid data, other is replaced with it ROM:00000FA6 ; ROM:00000FA6 ; if both appear valid, #0 is assumed dominant ROM:00000FA6 ; ROM:00000FA6 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00000FAA mov.l @RamCache_ED_data:16, er0 ROM:00000FB0 mov.l er0, @(8:16,er5) ROM:00000FB6 mov.w @word_FFF856:16, r0 ROM:00000FBA mov.w r0, @(0xC:16,er5) ROM:00000FBE sub.w e6, e6 ROM:00000FC0 ROM:00000FC0 loc_FC0: ; CODE XREF: irCommsEventLoop+704j ROM:00000FC0 mov.w e6, r0 ROM:00000FC2 mov.w #0x26, r1 ; '&' ROM:00000FC6 add.w r5, r1 ROM:00000FC8 add.w e6, r1 ROM:00000FCA mov.b @(unk_FFF896,er0), r0l ROM:00000FCE mov.b r0l, @er1 ROM:00000FD0 inc.w #1, e6 ROM:00000FD2 cmp.w #0x10, e6 ROM:00000FD6 bge loc_1796:16 ROM:00000FDA bra loc_FC0:8 ROM:00000FDC ; --------------------------------------------------------------------------- ROM:00000FDC ROM:00000FDC loc_FDC: ; CODE XREF: irCommsEventLoop+630j ROM:00000FDC jsr get_packet_data_pointer:24 ROM:00000FE0 mov.w r0, e0 ROM:00000FE2 mov.w #0x38, r1 ; '8' ROM:00000FE6 mov.w #0xF6C0, r0 ROM:00000FEA jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00000FEE mov.b #2, r1l ROM:00000FF0 mov.w #0x1600, r0 ROM:00000FF4 jmp sendPacket_and_go_on:24 ROM:00000FF8 ; --------------------------------------------------------------------------- ROM:00000FF8 ROM:00000FF8 rxed_0x16: ; CODE XREF: irCommsEventLoop+22Cj ROM:00000FF8 mov.b r3h, r3h ROM:00000FFA beq loc_1006:8 ROM:00000FFC mov.b #2, r1l ROM:00000FFE mov.w #0x1600, r0 ROM:00001002 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00001006 ROM:00001006 loc_1006: ; CODE XREF: irCommsEventLoop+724j ROM:00001006 mov.b #0x16, r0l ROM:00001008 jmp request_pokemon_Action:24 ; action in r0l ROM:00001008 ; 0x4e - bye ROM:00001008 ; 0x5a - welcome ROM:0000100C ; --------------------------------------------------------------------------- ROM:0000100C ROM:0000100C rxed_0x1C: ; CODE XREF: irCommsEventLoop+232j ROM:0000100C mov.b #5, r0l ; "Cannot connect to trainer again" ROM:0000100E mov.b r0l, @commsErrorMessageId:16 ROM:00001012 jmp rxed_0xF4:24 ROM:00001016 ; --------------------------------------------------------------------------- ROM:00001016 ROM:00001016 rxed_0x20: ; CODE XREF: irCommsEventLoop+238j ROM:00001016 jsr get_packet_data_pointer:24 ; ROM:00001016 ; RIGHT NOW: ROM:00001016 ; r1 is direction << 8 ROM:00001016 ; r3l is command byte ROM:00001016 ; r4l is direction byte ROM:00001016 ; r4h, r0, e2 is payload len ROM:00001016 ; r5 is payload pointer ROM:00001016 ; r6 = 0xB800 ROM:00001016 ; e3 = 0xED ROM:00001016 ; e4 = 0x68 ROM:00001016 ; e6 = 0x1ED ROM:00001016 ; e5 = 8 ROM:0000101A mov.w r0, r5 ROM:0000101C jsr get_packet_data_pointer:24 ROM:00001020 mov.w r0, r1 ROM:00001022 mov.w e4, e1 ROM:00001024 mov.w e6, e0 ; read 0xED/0x1ED data to packet payload area ROM:00001026 mov.w e3, r0 ROM:00001028 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00001028 ; ROM:00001028 ; data is stored in two provided locations and read to RAM ROM:00001028 ; each location includes a checksum right after the data (not inluded in length) ROM:00001028 ; ROM:00001028 ; if only one location has checksum-valid data, other is replaced with it ROM:00001028 ; ROM:00001028 ; if both appear valid, #0 is assumed dominant ROM:00001028 ; ROM:00001028 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000102C mov.l @RamCache_totalSteps:16, er0 ROM:00001032 mov.l er0, @(0x64:16,er5) ROM:00001038 mov.w #0x18, e1 ROM:0000103C mov.w #RamCache_totalSteps, r1 ROM:00001040 mov.l #0x2560156, er0 ROM:00001046 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001046 ; ROM:00001046 ; see docs for readRedundantDataFromEeprom for format info ROM:0000104A mov.w #0xCE8A, r0 ; write cur watts to eeprom so remote can get them easily ROM:0000104E mov.w #2, r1 ROM:00001052 mov.w #RamCache_curWatts, e0 ROM:00001056 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000105A mov.w r5, r0 ROM:0000105C mov.w #RamCache_ED_data, r1 ROM:00001060 mov.w #0x68, r2 ; 'h' ROM:00001064 jsr memoryCopy:24 ; (r0 = src, r1 = dst, r2 = len) ROM:00001068 mov.b #2, r1l ROM:0000106A mov.w #0x2268, r0 ; reply with 0x22 packet, 0x68 bytes (104) ROM:0000106E jmp sendPacket_and_go_on:24 ROM:00001072 ; --------------------------------------------------------------------------- ROM:00001072 ROM:00001072 rxed_0x32: ; CODE XREF: irCommsEventLoop+23Ej ROM:00001072 jsr processSyncPacketFromGame:24 ROM:00001076 mov.w #0x18, e1 ROM:0000107A mov.w #RamCache_totalSteps, r1 ROM:0000107E mov.l #0x2560156, er0 ROM:00001084 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001084 ; ROM:00001084 ; see docs for readRedundantDataFromEeprom for format info ROM:00001088 mov.b #2, r1l ROM:0000108A mov.w #0x3400, r0 ROM:0000108E jmp sendPacket_and_go_on:24 ROM:00001092 ; --------------------------------------------------------------------------- ROM:00001092 ROM:00001092 rxed_0x36: ; CODE XREF: irCommsEventLoop+244j ROM:00001092 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00001094 mov.b r0l, @commsErrorMessageId:16 ROM:00001098 jmp rxed_0xF4:24 ROM:0000109C ; --------------------------------------------------------------------------- ROM:0000109C ROM:0000109C rxed_0x38: ; CODE XREF: irCommsEventLoop+24Aj ROM:0000109C mov.b #2, r1l ROM:0000109E mov.w #0x3800, r0 ROM:000010A2 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000010A6 mov.b #0x38, r0l ; '8' ROM:000010A8 jmp loc_15E4:24 ROM:000010AC ; --------------------------------------------------------------------------- ROM:000010AC ROM:000010AC rxed_0x40: ; CODE XREF: irCommsEventLoop+250j ROM:000010AC jsr processSyncPacketFromGame:24 ROM:000010B0 mov.w #0x18, e1 ROM:000010B4 mov.w #RamCache_totalSteps, r1 ROM:000010B8 mov.l #0x2560156, er0 ROM:000010BE jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000010BE ; ROM:000010BE ; see docs for readRedundantDataFromEeprom for format info ROM:000010C2 mov.b #2, r1l ROM:000010C4 mov.w #0x4200, r0 ROM:000010C8 jmp sendPacket_and_go_on:24 ROM:000010CC ; --------------------------------------------------------------------------- ROM:000010CC ROM:000010CC rxed_0x44: ; CODE XREF: irCommsEventLoop+256j ROM:000010CC mov.b #3, r0l ; "Cannot complete this Connection" ROM:000010CE mov.b r0l, @commsErrorMessageId:16 ROM:000010D2 jmp rxed_0xF4:24 ROM:000010D6 ; --------------------------------------------------------------------------- ROM:000010D6 ROM:000010D6 rxed_0x4E: ; CODE XREF: irCommsEventLoop+25Cj ROM:000010D6 mov.b #2, r1l ROM:000010D8 mov.w #0x5000, r0 ROM:000010DC jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000010E0 mov.b #0x4E, r0l ; 'N' ROM:000010E2 jmp request_pokemon_Action:24 ; action in r0l ROM:000010E2 ; 0x4e - bye ROM:000010E2 ; 0x5a - welcome ROM:000010E6 ; --------------------------------------------------------------------------- ROM:000010E6 ROM:000010E6 rxed_0x52: ; CODE XREF: irCommsEventLoop+262j ROM:000010E6 jsr processSyncPacketFromGame:24 ROM:000010EA mov.w #0x18, e1 ROM:000010EE mov.w #RamCache_totalSteps, r1 ROM:000010F2 mov.l #0x2560156, er0 ROM:000010F8 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000010F8 ; ROM:000010F8 ; see docs for readRedundantDataFromEeprom for format info ROM:000010FC mov.b #2, r1l ROM:000010FE mov.w #0x5400, r0 ROM:00001102 jmp sendPacket_and_go_on:24 ROM:00001106 ; --------------------------------------------------------------------------- ROM:00001106 ROM:00001106 rxed_0x5A: ; CODE XREF: irCommsEventLoop+268j ROM:00001106 mov.b #2, r1l ROM:00001108 mov.w #0x5A00, r0 ROM:0000110C jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00001110 mov.b #0x5A, r0l ; 'Z' ROM:00001112 jmp request_pokemon_Action:24 ; action in r0l ROM:00001112 ; 0x4e - bye ROM:00001112 ; 0x5a - welcome ROM:00001116 ; --------------------------------------------------------------------------- ROM:00001116 ROM:00001116 rxed_0x56: ; CODE XREF: irCommsEventLoop+26Ej ROM:00001116 mov.b #3, r0l ; "Cannot complete this Connection" ROM:00001118 mov.b r0l, @commsErrorMessageId:16 ROM:0000111C jmp rxed_0xF4:24 ROM:00001120 ; --------------------------------------------------------------------------- ROM:00001120 ROM:00001120 rxed_0x60: ; CODE XREF: irCommsEventLoop+274j ROM:00001120 jsr processSyncPacketFromGame:24 ; ROM:00001120 ; RIGHT NOW: ROM:00001120 ; r1 is direction << 8 ROM:00001120 ; r3l is command byte ROM:00001120 ; r4l is direction byte ROM:00001120 ; r4h, r0, e2 is payload len ROM:00001120 ; r5 is payload pointer ROM:00001120 ; r6 = 0xB800 ROM:00001120 ; e3 = 0xED ROM:00001120 ; e4 = 0x68 ROM:00001120 ; e6 = 0x1ED ROM:00001120 ; e5 = 8 ROM:00001124 mov.w e4, e1 ROM:00001126 mov.w e6, e0 ROM:00001128 mov.w e3, r0 ROM:0000112A mov.w #RamCache_ED_data, r1 ROM:0000112E jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000112E ; ROM:0000112E ; data is stored in two provided locations and read to RAM ROM:0000112E ; each location includes a checksum right after the data (not inluded in length) ROM:0000112E ; ROM:0000112E ; if only one location has checksum-valid data, other is replaced with it ROM:0000112E ; ROM:0000112E ; if both appear valid, #0 is assumed dominant ROM:0000112E ; ROM:0000112E ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00001132 mov.b #2, r1l ROM:00001134 mov.w #0x6200, r0 ROM:00001138 jmp sendPacket_and_go_on:24 ROM:0000113C ; --------------------------------------------------------------------------- ROM:0000113C ROM:0000113C rxed_0x66: ; CODE XREF: irCommsEventLoop+27Aj ROM:0000113C mov.b #2, r1l ROM:0000113E mov.w #0x6800, r0 ROM:00001142 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00001146 mov.b #0x66, r0l ; 'f' ROM:00001148 jmp loc_15E4:24 ROM:0000114C ; --------------------------------------------------------------------------- ROM:0000114C ROM:0000114C rxed_0x64: ; CODE XREF: irCommsEventLoop+280j ROM:0000114C mov.b #3, r0l ; "Cannot complete this Connection" ROM:0000114E mov.b r0l, @commsErrorMessageId:16 ROM:00001152 jmp rxed_0xF4:24 ROM:00001156 ; --------------------------------------------------------------------------- ROM:00001156 ROM:00001156 rxed_0xC0: ; CODE XREF: irCommsEventLoop+286j ROM:00001156 mov.w r6, r0 ; ROM:00001156 ; RIGHT NOW: ROM:00001156 ; r1 is direction << 8 ROM:00001156 ; r3l is command byte ROM:00001156 ; r4l is direction byte ROM:00001156 ; r4h, r0, e2 is payload len ROM:00001156 ; r5 is payload pointer ROM:00001156 ; r6 = 0xB800 ROM:00001156 ; e3 = 0xED ROM:00001156 ; e4 = 0x68 ROM:00001156 ; e6 = 0x1ED ROM:00001156 ; e5 = 8 ROM:00001158 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:0000115C mov.b r0l, r5l ROM:0000115E bset #4, r5l ROM:00001160 bra loc_116C:8 ROM:00001162 ; --------------------------------------------------------------------------- ROM:00001162 ROM:00001162 rxed_0xD0: ; CODE XREF: irCommsEventLoop+28Cj ROM:00001162 mov.w r6, r0 ROM:00001164 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00001168 mov.b r0l, r5l ROM:0000116A or.b #0x1F, r5l ROM:0000116C ROM:0000116C loc_116C: ; CODE XREF: irCommsEventLoop+88Aj ROM:0000116C mov.b r5l, r1l ROM:0000116E mov.w r6, r0 ROM:00001170 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00001174 mov.b @byte_FFF840:16, r1l ; rxed ED data + 0x5A, assuming a command that sends us said data was recently run (eg: A0, A2, A4. A6 cmds, etc) ROM:00001178 mov.w #RamCache_ED_data, r0 ROM:0000117C jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:00001180 mov.b #2, r1l ROM:00001182 mov.w #0xC000, r0 ROM:00001186 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:0000118A mov.b #0xC0, r0l ; '+' ROM:0000118C jmp request_pokemon_Action:24 ; action in r0l ROM:0000118C ; 0x4e - bye ROM:0000118C ; 0x5a - welcome ROM:00001190 ; --------------------------------------------------------------------------- ROM:00001190 ROM:00001190 mark_have_event_poke: ; CODE XREF: irCommsEventLoop+292j ROM:00001190 mov.w r6, r0 ROM:00001192 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00001196 mov.b r0l, r5l ROM:00001198 bset #5, r5l ROM:0000119A bra loc_11A6:8 ROM:0000119C ; --------------------------------------------------------------------------- ROM:0000119C ROM:0000119C loc_119C: ; CODE XREF: irCommsEventLoop+298j ROM:0000119C mov.w r6, r0 ROM:0000119E jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000011A2 mov.b r0l, r5l ROM:000011A4 or.b #0x2F, r5l ROM:000011A6 ROM:000011A6 loc_11A6: ; CODE XREF: irCommsEventLoop+8C4j ROM:000011A6 mov.b r5l, r1l ROM:000011A8 mov.w r6, r0 ROM:000011AA jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:000011AE mov.b @byte_FFF840:16, r1l ROM:000011B2 mov.w #RamCache_ED_data, r0 ROM:000011B6 jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:000011BA mov.b #2, r1l ROM:000011BC mov.w #0xC200, r0 ROM:000011C0 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000011C4 mov.b #0xC2, r0l ; '-' ROM:000011C6 jmp request_pokemon_Action:24 ; action in r0l ROM:000011C6 ; 0x4e - bye ROM:000011C6 ; 0x5a - welcome ROM:000011CA ; --------------------------------------------------------------------------- ROM:000011CA ROM:000011CA mark_have_event_item_RXed: ; CODE XREF: irCommsEventLoop+29Ej ROM:000011CA mov.w r6, r0 ROM:000011CC jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000011D0 mov.b r0l, r5l ROM:000011D2 bset #6, r5l ROM:000011D4 bra loc_11E0:8 ROM:000011D6 ; --------------------------------------------------------------------------- ROM:000011D6 ROM:000011D6 loc_11D6: ; CODE XREF: irCommsEventLoop+2A4j ROM:000011D6 mov.w r6, r0 ROM:000011D8 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000011DC mov.b r0l, r5l ROM:000011DE or.b #0x4F, r5l ROM:000011E0 ROM:000011E0 loc_11E0: ; CODE XREF: irCommsEventLoop+8FEj ROM:000011E0 mov.b r5l, r1l ROM:000011E2 mov.w r6, r0 ROM:000011E4 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:000011E8 mov.b @byte_FFF840:16, r1l ROM:000011EC mov.w #RamCache_ED_data, r0 ROM:000011F0 jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:000011F4 mov.b #2, r1l ROM:000011F6 mov.w #0xC400, r0 ROM:000011FA jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000011FE mov.b #0xC4, r0l ; '-' ROM:00001200 bra request_pokemon_Action:8 ; action in r0l ROM:00001200 ; 0x4e - bye ROM:00001200 ; 0x5a - welcome ROM:00001202 ; --------------------------------------------------------------------------- ROM:00001202 ROM:00001202 handle_event_route_received: ; CODE XREF: irCommsEventLoop+2AAj ROM:00001202 mov.w r6, r0 ROM:00001204 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00001208 mov.b r0l, r5l ROM:0000120A bset #7, r5l ROM:0000120C bra loc_1218:8 ROM:0000120E ; --------------------------------------------------------------------------- ROM:0000120E ROM:0000120E loc_120E: ; CODE XREF: irCommsEventLoop+2B0j ROM:0000120E mov.w r6, r0 ROM:00001210 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00001214 mov.b r0l, r5l ROM:00001216 or.b #0x8F, r5l ROM:00001218 ROM:00001218 loc_1218: ; CODE XREF: irCommsEventLoop+936j ROM:00001218 mov.b r5l, r1l ROM:0000121A mov.w r6, r0 ROM:0000121C jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00001220 mov.b @byte_FFF840:16, r1l ROM:00001224 mov.w #RamCache_ED_data, r0 ROM:00001228 jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:0000122C mov.w #RamCache_settingsByte, r0 ROM:00001230 bset #0, @er0 ; set special even flag ROM:00001234 mov.w #0x18, e1 ROM:00001238 mov.w #RamCache_totalSteps, r1 ; write the updated status flag to eeprom ROM:0000123C mov.l #0x2560156, er0 ROM:00001242 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001242 ; ROM:00001242 ; see docs for readRedundantDataFromEeprom for format info ROM:00001246 mov.b #2, r1l ROM:00001248 mov.w #0xC600, r0 ROM:0000124C jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00001250 mov.b #0xC6, r0l ; '¦' ROM:00001252 ROM:00001252 request_pokemon_Action: ; CODE XREF: irCommsEventLoop+732j ROM:00001252 ; irCommsEventLoop+80Cj ... ROM:00001252 mov.b r0l, @REQUESTED_POKEMON_ACTION_TYPE:16 ; action in r0l ROM:00001252 ; 0x4e - bye ROM:00001252 ; 0x5a - welcome ROM:00001256 jmp rxed_0xF4:24 ROM:0000125A ; --------------------------------------------------------------------------- ROM:0000125A ROM:0000125A rxed_0xD8: ; CODE XREF: irCommsEventLoop+2B6j ROM:0000125A mov.b #3, r0l ; "Cannot complete this Connection" ROM:0000125C mov.b r0l, @commsErrorMessageId:16 ROM:00001260 jmp rxed_0xF4:24 ROM:00001264 ; --------------------------------------------------------------------------- ROM:00001264 ROM:00001264 rxed_0x24: ; CODE XREF: irCommsEventLoop+2BCj ROM:00001264 mov.b #2, r1l ROM:00001266 mov.w #0x2600, r0 ROM:0000126A jmp sendPacket_and_go_on:24 ROM:0000126E ; --------------------------------------------------------------------------- ROM:0000126E ROM:0000126E rxed_0x00_or_0x80: ; CODE XREF: irCommsEventLoop+2C2j ROM:0000126E ; irCommsEventLoop+2C8j ROM:0000126E mov.b r3l, r0l ; ROM:0000126E ; RIGHT NOW: ROM:0000126E ; r0, r1 is direction << 8 ROM:0000126E ; r3l is command byte ROM:0000126E ; r4l is direction byte ROM:0000126E ; r4h is payload len ROM:0000126E ; r5 is payload pointer ROM:00001270 extu.w r0 ROM:00001272 mov.w r1, e6 ROM:00001274 add.w r0, e6 ; destination address in eeprom ROM:00001276 cmp.b #0x80, r4h ; 'Ç' ROM:00001278 bne compressed_data_not_128_bytes_long:8 ROM:0000127A ROM:0000127A compressed_data_exactly_128_bytes_long: ; r5 is cmd pointer ROM:0000127A mov.w r5, e0 ROM:0000127C mov.w e6, r0 ROM:0000127E bra loc_1290:8 ROM:00001280 ; --------------------------------------------------------------------------- ROM:00001280 ROM:00001280 compressed_data_not_128_bytes_long: ; CODE XREF: irCommsEventLoop+9A2j ROM:00001280 mov.w r5, r0 ROM:00001282 mov.w #DECOMPRESSION_BUFFER, e0 ROM:00001286 jsr decompress:24 ; (u8* out = e0, u8 * in = r0) ROM:0000128A mov.w e6, r0 ROM:0000128C mov.w #DECOMPRESSION_BUFFER, e0 ROM:00001290 ROM:00001290 loc_1290: ; CODE XREF: irCommsEventLoop+9A8j ROM:00001290 jsr eepromWrite128Bytes:24 ; (r0 = eepromAddr, e0 = data in RAM) //always 0x80 bytes written ROM:00001294 jmp send_0x04_ack_packet:24 ROM:00001298 ; --------------------------------------------------------------------------- ROM:00001298 ROM:00001298 rxed_0x02_or_0x82: ; CODE XREF: irCommsEventLoop+2CEj ROM:00001298 ; irCommsEventLoop+2D4j ROM:00001298 and.b #0x80, r3l ROM:0000129A mov.b r3l, r0l ; 0x80 addr ROM:0000129C extu.w r0 ROM:0000129E mov.w r1, e6 ; "direction" byte ROM:000012A0 add.w r0, e6 ROM:000012A2 mov.w r5, e0 ROM:000012A4 mov.w e6, r0 ; address ROM:000012A6 mov.w e2, r1 ; payload_len ROM:000012A8 jmp handle_uncompressed_write:24 ROM:000012AC ; --------------------------------------------------------------------------- ROM:000012AC ROM:000012AC rxed_0x04: ; CODE XREF: irCommsEventLoop+2DAj ROM:000012AC mov.w e1, r0 ; handle replies to writes we do unto a peer ROM:000012AE bne more_data_to_send_to_peer:16 ; RIGHT NOW: ROM:000012AE ; r1 is direction << 8 ROM:000012AE ; r3l is command byte ROM:000012AE ; r4l is direction byte ROM:000012AE ; r4h, r0, e2 is payload len ROM:000012AE ; r5 is payload pointer ROM:000012AE ; r6 = 0xB800 ROM:000012AE ; e1 = PeerPlayEepromXferSizeLeft ROM:000012AE ; e3 = 0xED ROM:000012AE ; e4 = 0x68 ROM:000012AE ; e5 = 8 ROM:000012AE ; e6 = 0x1ED ROM:000012B2 ROM:000012B2 cur_peer_xfer_stage_done_proceed_to_next: ; 1 - write our animated poke sprite to slave's eeprom ROM:000012B2 mov.b @PeerPlayStage:16, r0l ; 2 - read peer's animated poke sprite to our eeprom ROM:000012B2 ; 3 - write our rendered name image to slave's eeprom ROM:000012B2 ; 4 - read peer's rendered name image to our eeprom ROM:000012B2 ; 5 - write current team data to slave's eeprom ROM:000012B2 ; 6 - read current team data to slave's eeprom ROM:000012B2 ; ROM:000012B2 ; ROM:000012B2 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:000012B6 cmp.b #1, r0l ROM:000012B8 beq loc_12C6:8 ROM:000012BA cmp.b #3, r0l ROM:000012BC beq loc_12F6:8 ROM:000012BE cmp.b #5, r0l ROM:000012C0 bne loc_182E:16 ROM:000012C4 bra loc_1326:8 ROM:000012C6 ; --------------------------------------------------------------------------- ROM:000012C6 ROM:000012C6 loc_12C6: ; CODE XREF: irCommsEventLoop+9E2j ROM:000012C6 mov.w #0xF580, e6 ROM:000012CA mov.w #0x993E, r5 ROM:000012CE mov.b #3, r0l ROM:000012D0 mov.b r0l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:000012D0 ; 2 - read peer's animated poke sprite to our eeprom ROM:000012D0 ; 3 - write our rendered name image to slave's eeprom ROM:000012D0 ; 4 - read peer's rendered name image to our eeprom ROM:000012D0 ; 5 - write current team data to slave's eeprom ROM:000012D0 ; 6 - read current team data to slave's eeprom ROM:000012D0 ; ROM:000012D0 ; ROM:000012D0 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:000012D4 mov.w r5, @PeerPlayEepromXferLocalAddr:16 ROM:000012D8 mov.w e6, @PeerPlayEepromXferRemoteAddr:16 ROM:000012DC mov.w #0x140, r0 ROM:000012E0 mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:000012E4 sub.b r0l, r0l ROM:000012E6 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:000012EA mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:000012EE cmp.w #0x80, e6 ; 'Ç' ROM:000012F2 bls loc_1366:8 ROM:000012F4 bra loc_1362:8 ROM:000012F6 ; --------------------------------------------------------------------------- ROM:000012F6 ROM:000012F6 loc_12F6: ; CODE XREF: irCommsEventLoop+9E6j ROM:000012F6 mov.w #0xDC00, e6 ROM:000012FA mov.w #0xCC00, r5 ROM:000012FE mov.b #5, r0l ROM:00001300 mov.b r0l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:00001300 ; 2 - read peer's animated poke sprite to our eeprom ROM:00001300 ; 3 - write our rendered name image to slave's eeprom ROM:00001300 ; 4 - read peer's rendered name image to our eeprom ROM:00001300 ; 5 - write current team data to slave's eeprom ROM:00001300 ; 6 - read current team data to slave's eeprom ROM:00001300 ; ROM:00001300 ; ROM:00001300 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:00001304 mov.w r5, @PeerPlayEepromXferLocalAddr:16 ROM:00001308 mov.w e6, @PeerPlayEepromXferRemoteAddr:16 ROM:0000130C mov.w #0x224, r0 ROM:00001310 mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:00001314 sub.b r0l, r0l ROM:00001316 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:0000131A mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:0000131E cmp.w #0x80, e6 ; 'Ç' ROM:00001322 bls loc_1366:8 ROM:00001324 bra loc_1362:8 ROM:00001326 ; --------------------------------------------------------------------------- ROM:00001326 ROM:00001326 loc_1326: ; CODE XREF: irCommsEventLoop+9EEj ROM:00001326 mov.w #0xF400, e6 ROM:0000132A mov.w #0x91BE, r5 ROM:0000132E mov.b #2, r0l ROM:00001330 mov.b r0l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:00001330 ; 2 - read peer's animated poke sprite to our eeprom ROM:00001330 ; 3 - write our rendered name image to slave's eeprom ROM:00001330 ; 4 - read peer's rendered name image to our eeprom ROM:00001330 ; 5 - write current team data to slave's eeprom ROM:00001330 ; 6 - read current team data to slave's eeprom ROM:00001330 ; ROM:00001330 ; ROM:00001330 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:00001334 mov.w r5, @PeerPlayEepromXferLocalAddr:16 ROM:00001338 mov.w e6, @PeerPlayEepromXferRemoteAddr:16 ROM:0000133C mov.w #0x180, r0 ROM:00001340 mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:00001344 sub.b r0l, r0l ROM:00001346 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:0000134A mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:0000134E cmp.w #0x80, e6 ; 'Ç' ROM:00001352 bls send_pkt_0x0C:16 ROM:00001356 jmp send_pkt_0x0C_len_0x80:24 ROM:0000135A ; --------------------------------------------------------------------------- ROM:0000135A ROM:0000135A more_data_to_send_to_peer: ; CODE XREF: irCommsEventLoop+9D8j ROM:0000135A mov.w e1, e6 ROM:0000135C cmp.w #0x80, e6 ; 'Ç' ROM:00001360 bls loc_1366:8 ROM:00001362 ROM:00001362 loc_1362: ; CODE XREF: irCommsEventLoop+62Aj ROM:00001362 ; irCommsEventLoop+A1Ej ... ROM:00001362 mov.w #0x80, e6 ; 'Ç' ROM:00001366 ROM:00001366 loc_1366: ; CODE XREF: irCommsEventLoop+626j ROM:00001366 ; irCommsEventLoop+A1Cj ... ROM:00001366 jsr get_packet_data_pointer:24 ROM:0000136A mov.w r0, e0 ROM:0000136C mov.w e6, r1 ROM:0000136E mov.w @PeerPlayEepromXferLocalAddr:16, r0 ROM:00001372 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001376 mov.w @PeerPlayEepromXferRemoteAddr:16, r5 ROM:0000137A mov.b r5h, r1l ROM:0000137C mov.b r5l, r0h ROM:0000137E and.b #0x80, r0h ROM:00001380 or.b #2, r0h ROM:00001382 mov.w e6, r2 ROM:00001384 mov.b r2l, r0l ROM:00001386 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:0000138A mov.w @PeerPlayEepromXferLocalAddr:16, r0 ROM:0000138E add.w e6, r0 ROM:00001390 mov.w r0, @PeerPlayEepromXferLocalAddr:16 ROM:00001394 mov.w @PeerPlayEepromXferRemoteAddr:16, r0 ROM:00001398 add.w e6, r0 ROM:0000139A mov.w r0, @PeerPlayEepromXferRemoteAddr:16 ROM:0000139E mov.w @PeerPlayEepromXferSizeLeft:16, r0 ROM:000013A2 sub.w e6, r0 ROM:000013A4 mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:000013A8 mov.b @PeerPlayEepromXfreNumPacketsSentSoFar:16, r0l ; no ide why we're counting ROM:000013AC inc.b r0l ROM:000013AE mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:000013B2 jmp loc_182E:24 ROM:000013B6 ; --------------------------------------------------------------------------- ROM:000013B6 ROM:000013B6 rxed_A0_A2_A4_A6: ; CODE XREF: irCommsEventLoop+2E0j ROM:000013B6 ; irCommsEventLoop+2E6j ... ROM:000013B6 jsr processSyncPacketFromGame:24 ; ROM:000013B6 ; RIGHT NOW: ROM:000013B6 ; r1 is direction << 8 ROM:000013B6 ; r3l is command byte ROM:000013B6 ; r4l is direction byte ROM:000013B6 ; r4h, r0, e2 is payload len ROM:000013B6 ; r5 is payload pointer ROM:000013B6 ; r6 = 0xB800 ROM:000013B6 ; e3 = 0xED ROM:000013B6 ; e4 = 0x68 ROM:000013B6 ; e6 = 0x1ED ROM:000013B6 ; e5 = 8 ROM:000013BA jsr get_packet_data_pointer:24 ROM:000013BE mov.w r0, r4 ROM:000013C0 sub.b r5l, r5l ; copy 16 bytes from F886 to packet data buffer ROM:000013C2 ROM:000013C2 loc_13C2: ; CODE XREF: irCommsEventLoop+AFCj ROM:000013C2 mov.b r5l, r0l ROM:000013C4 extu.w r0 ROM:000013C6 mov.b @(unk_FFF886,er0), r0l ; currently ED_dat + 0x38 - events bitfield ROM:000013CA mov.b r0l, @er4 ROM:000013CC inc.w #1, r4 ROM:000013CE inc.b r5l ROM:000013D0 cmp.b #0x10, r5l ROM:000013D2 bcs loc_13C2:8 ROM:000013D4 mov.b @byte_FFF840:16, r0l ; RXed_new_ED data + 0x5A ROM:000013D8 mov.b r0l, @er4 ROM:000013DA mov.b @byte_FFF840:16, r1l ROM:000013DE mov.w #RamCache_ED_data, r0 ROM:000013E2 jsr checkForWhetherWeveParticipatedInAGivenEvent:24 ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:000013E2 ; ROM:000013E2 ; always false for index 0 ROM:000013E6 mov.b r0l, r0l ROM:000013E8 beq loc_1444:8 ROM:000013EA mov.b #2, r1l ROM:000013EC mov.w #0x9E11, r0 ROM:000013F0 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000013F4 mov.b #6, r0l ; "Already received this event" ROM:000013F6 mov.b r0l, @commsErrorMessageId:16 ROM:000013FA jmp rxed_0xF4:24 ROM:000013FE ; --------------------------------------------------------------------------- ROM:000013FE ROM:000013FE rxed_A8_AA_AC_AE: ; CODE XREF: irCommsEventLoop+2F8j ROM:000013FE ; irCommsEventLoop+2FEj ... ROM:000013FE jsr processSyncPacketFromGame:24 ROM:00001402 jsr get_packet_data_pointer:24 ROM:00001406 mov.w r0, r4 ROM:00001408 sub.b r5l, r5l ROM:0000140A ROM:0000140A loc_140A: ; CODE XREF: irCommsEventLoop+B44j ROM:0000140A mov.b r5l, r0l ROM:0000140C extu.w r0 ROM:0000140E mov.b @(unk_FFF886,er0), r0l ROM:00001412 mov.b r0l, @er4 ROM:00001414 inc.w #1, r4 ROM:00001416 inc.b r5l ROM:00001418 cmp.b #0x10, r5l ROM:0000141A bcs loc_140A:8 ROM:0000141C mov.b @byte_FFF840:16, r0l ROM:00001420 mov.b r0l, @er4 ROM:00001422 mov.b @byte_FFF840:16, r1l ROM:00001426 mov.w #RamCache_ED_data, r0 ROM:0000142A jsr checkForWhetherWeveParticipatedInAGivenEvent:24 ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:0000142A ; ROM:0000142A ; always false for index 0 ROM:0000142E mov.b r0l, r0l ROM:00001430 beq loc_1444:8 ROM:00001432 mov.b #2, r1l ROM:00001434 mov.w #0x9E11, r0 ROM:00001438 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:0000143C mov.b #6, r0l ; "Already received this event" ROM:0000143E mov.b r0l, @commsErrorMessageId:16 ROM:00001442 bra rxed_0xF4:8 ROM:00001444 ; --------------------------------------------------------------------------- ROM:00001444 ROM:00001444 loc_1444: ; CODE XREF: irCommsEventLoop+B12j ROM:00001444 ; irCommsEventLoop+B5Aj ROM:00001444 mov.b r3l, r0h ROM:00001446 mov.b #2, r1l ROM:00001448 mov.b #0x11, r0l ROM:0000144A jmp sendPacket_and_go_on:24 ROM:0000144E ; --------------------------------------------------------------------------- ROM:0000144E ROM:0000144E rxed_B8_BA_BC_BE: ; CODE XREF: irCommsEventLoop+310j ROM:0000144E ; irCommsEventLoop+316j ... ROM:0000144E mov.w r6, r0 ; ROM:0000144E ; RIGHT NOW: ROM:0000144E ; r1 is direction << 8 ROM:0000144E ; r3l is command byte ROM:0000144E ; r4l is direction byte ROM:0000144E ; r4h, r0, e2 is payload len ROM:0000144E ; r5 is payload pointer ROM:0000144E ; r6 = 0xB800 ROM:0000144E ; e3 = 0xED ROM:0000144E ; e4 = 0x68 ROM:0000144E ; e6 = 0x1ED ROM:0000144E ; e5 = 8 ROM:00001450 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00001454 mov.b r0l, r5l ; B800 byte ROM:00001456 mov.b r3l, r0l ROM:00001458 cmp.b #0xB8, r0l ; '+' ROM:0000145A beq loc_146A:8 ROM:0000145C cmp.b #0xBA, r0l ; '¦' ROM:0000145E beq loc_1470:8 ROM:00001460 cmp.b #0xBC, r0l ; '+' ROM:00001462 beq loc_1476:8 ROM:00001464 cmp.b #0xBE, r0l ; '+' ROM:00001466 bne loc_1484:8 ROM:00001468 bra loc_147C:8 ROM:0000146A ; --------------------------------------------------------------------------- ROM:0000146A ROM:0000146A loc_146A: ; CODE XREF: irCommsEventLoop+B84j ROM:0000146A bset #0, r5l ROM:0000146C mov.b #0xB8, r0l ; '+' ROM:0000146E bra loc_1480:8 ROM:00001470 ; --------------------------------------------------------------------------- ROM:00001470 ROM:00001470 loc_1470: ; CODE XREF: irCommsEventLoop+B88j ROM:00001470 bset #1, r5l ROM:00001472 mov.b #0xBA, r0l ; '¦' ROM:00001474 bra loc_1480:8 ROM:00001476 ; --------------------------------------------------------------------------- ROM:00001476 ROM:00001476 loc_1476: ; CODE XREF: irCommsEventLoop+B8Cj ROM:00001476 bset #2, r5l ROM:00001478 mov.b #0xBC, r0l ; '+' ROM:0000147A bra loc_1480:8 ROM:0000147C ; --------------------------------------------------------------------------- ROM:0000147C ROM:0000147C loc_147C: ; CODE XREF: irCommsEventLoop+B92j ROM:0000147C bset #3, r5l ROM:0000147E mov.b #0xBE, r0l ; '+' ROM:00001480 ROM:00001480 loc_1480: ; CODE XREF: irCommsEventLoop+B98j ROM:00001480 ; irCommsEventLoop+B9Ej ... ROM:00001480 mov.b r0l, @REQUESTED_POKEMON_ACTION_TYPE:16 ROM:00001484 ROM:00001484 loc_1484: ; CODE XREF: irCommsEventLoop+B90j ROM:00001484 mov.b r5l, r1l ROM:00001486 mov.w r6, r0 ROM:00001488 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:0000148C add.b #0x10, r3l ROM:0000148E mov.b r3l, r0h ROM:00001490 mov.b #2, r1l ROM:00001492 sub.b r0l, r0l ROM:00001494 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:00001498 bra rxed_0xF4:8 ROM:0000149A ; --------------------------------------------------------------------------- ROM:0000149A ROM:0000149A rxed_0x9E: ; CODE XREF: irCommsEventLoop+328j ROM:0000149A mov.b #2, r1l ROM:0000149C mov.w #0x9E00, r0 ROM:000014A0 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000014A4 mov.b #7, r0l ; "Could not receive..." ROM:000014A6 mov.b r0l, @commsErrorMessageId:16 ROM:000014AA bra rxed_0xF4:8 ROM:000014AC ; --------------------------------------------------------------------------- ROM:000014AC ROM:000014AC rxed_0x9C: ; CODE XREF: irCommsEventLoop+32Ej ROM:000014AC mov.b #2, r1l ROM:000014AE mov.w #0x9C00, r0 ROM:000014B2 jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000014B6 mov.b #7, r0l ; "Could not receive..." ROM:000014B8 mov.b r0l, @commsErrorMessageId:16 ROM:000014BC ROM:000014BC rxed_0xF4: ; CODE XREF: irCommsEventLoop+20Ej ROM:000014BC ; irCommsEventLoop+3FEj ... ROM:000014BC jsr maybe_shutDownIr_then_performActionAsRequested:24 ROM:000014C0 jmp loc_182E:24 ROM:000014C4 ; --------------------------------------------------------------------------- ROM:000014C4 ROM:000014C4 loc_14C4: ; CODE XREF: irCommsEventLoop+334j ROM:000014C4 jsr get_packet_data_pointer:24 ROM:000014C8 mov.w r0, r5 ROM:000014CA mov.w r0, r1 ROM:000014CC mov.w #0x28, e1 ; '(' ROM:000014D0 mov.l #0x1830083, er0 ROM:000014D6 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000014D6 ; ROM:000014D6 ; see docs for readRedundantDataFromEeprom for format info ROM:000014DA mov.w #0x68, e0 ; 'h' ROM:000014DE add.w r5, e0 ROM:000014E0 mov.w e5, r1 ; 8 ROM:000014E2 mov.w e5, r0 ; 8 ROM:000014E4 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:000014E8 mov.b #1, r0l ROM:000014EA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000014EA ; battle: ROM:000014EA ; 0 - battle opening animation ROM:000014EA ; 1 - "XYZ appeared" message ROM:000014EA ; 2 - "attack evade catch" directions shown ROM:000014EA ; 3 - our action taken. details in gCurSubstateF ROM:000014EA ; 4 - poke action taken. details in gCurSubstateF ROM:000014EA ; 5 - "was too strong" ROM:000014EA ; 6 - we lost ROM:000014EA ; 7 - fled ROM:000014EA ; 8 - staredown ROM:000014EA ; 9 - almost had it ROM:000014EA ; 10 - "threw a pokeball" ROM:000014EA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000014EA ; 12, 14 - pokeball flying ROM:000014EA ; 13 - pokeball flying ROM:000014EA ; 15 - catch animation plays ROM:000014EA ; 16 - caught! ROM:000014EA ; switcht: ROM:000014EA ; cur slected poke name ROM:000014EE mov.b #0xF0, r0l ; '=' ROM:000014F0 mov.b r0l, @REQUESTED_POKEMON_ACTION_TYPE:16 ROM:000014F4 mov.l #0x4001AC, er4 ROM:000014FA mov.w #0xAC, e6 ; '¼' ROM:000014FE mov.b @(0x70:16,er5), r0l ROM:00001502 beq loc_1512:8 ROM:00001504 cmp.b #1, r0l ROM:00001506 beq loc_1524:8 ROM:00001508 cmp.b #2, r0l ROM:0000150A beq loc_1570:8 ROM:0000150C cmp.b #3, r0l ROM:0000150E bne loc_1570:8 ROM:00001510 bra loc_155A:8 ROM:00001512 ; --------------------------------------------------------------------------- ROM:00001512 ROM:00001512 loc_1512: ; CODE XREF: irCommsEventLoop+C2Cj ROM:00001512 mov.w e4, e1 ROM:00001514 mov.w #0x28, r1 ; '(' ROM:00001518 add.w r5, r1 ROM:0000151A mov.w r4, e0 ROM:0000151C mov.w e6, r0 ROM:0000151E jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000151E ; ROM:0000151E ; see docs for readRedundantDataFromEeprom for format info ROM:00001522 bra loc_1570:8 ROM:00001524 ; --------------------------------------------------------------------------- ROM:00001524 ROM:00001524 loc_1524: ; CODE XREF: irCommsEventLoop+C30j ROM:00001524 mov.w e4, e1 ROM:00001526 mov.w r4, e0 ; read reduncant data from 0xAC ROM:00001528 mov.w e6, r0 ROM:0000152A mov.w #DECOMPRESSION_BUFFER, r1 ROM:0000152E jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000152E ; ROM:0000152E ; data is stored in two provided locations and read to RAM ROM:0000152E ; each location includes a checksum right after the data (not inluded in length) ROM:0000152E ; ROM:0000152E ; if only one location has checksum-valid data, other is replaced with it ROM:0000152E ; ROM:0000152E ; if both appear valid, #0 is assumed dominant ROM:0000152E ; ROM:0000152E ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00001532 sub.b r4l, r4l ROM:00001534 ROM:00001534 loc_1534: ; CODE XREF: irCommsEventLoop+C82j ROM:00001534 mov.b r4l, r0l ROM:00001536 extu.w r0 ROM:00001538 mov.w #0x28, r1 ; '(' ROM:0000153C add.w r5, r1 ROM:0000153E add.w r0, r1 ROM:00001540 mov.b @er1, r1l ROM:00001542 mov.b @(DECOMPRESSION_BUFFER,er0), r0l ROM:00001546 cmp.b r0l, r1l ROM:00001548 beq loc_1552:8 ROM:0000154A sub.b r0l, r0l ROM:0000154C mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000154C ; battle: ROM:0000154C ; 0 - battle opening animation ROM:0000154C ; 1 - "XYZ appeared" message ROM:0000154C ; 2 - "attack evade catch" directions shown ROM:0000154C ; 3 - our action taken. details in gCurSubstateF ROM:0000154C ; 4 - poke action taken. details in gCurSubstateF ROM:0000154C ; 5 - "was too strong" ROM:0000154C ; 6 - we lost ROM:0000154C ; 7 - fled ROM:0000154C ; 8 - staredown ROM:0000154C ; 9 - almost had it ROM:0000154C ; 10 - "threw a pokeball" ROM:0000154C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000154C ; 12, 14 - pokeball flying ROM:0000154C ; 13 - pokeball flying ROM:0000154C ; 15 - catch animation plays ROM:0000154C ; 16 - caught! ROM:0000154C ; switcht: ROM:0000154C ; cur slected poke name ROM:00001550 bra loc_1570:8 ROM:00001552 ; --------------------------------------------------------------------------- ROM:00001552 ROM:00001552 loc_1552: ; CODE XREF: irCommsEventLoop+C72j ROM:00001552 inc.b r4l ROM:00001554 cmp.b #0x40, r4l ; '@' ROM:00001556 bcc loc_1570:8 ROM:00001558 bra loc_1534:8 ROM:0000155A ; --------------------------------------------------------------------------- ROM:0000155A ROM:0000155A loc_155A: ; CODE XREF: irCommsEventLoop+C3Aj ROM:0000155A mov.w e4, e1 ROM:0000155C mov.w #0x28, r1 ; '(' ROM:00001560 add.w r5, r1 ROM:00001562 mov.w r4, e0 ROM:00001564 mov.w e6, r0 ROM:00001566 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001566 ; ROM:00001566 ; see docs for readRedundantDataFromEeprom for format info ROM:0000156A mov.b #0xE0, r0l ; 'a' ROM:0000156C mov.b r0l, @REQUESTED_POKEMON_ACTION_TYPE:16 ROM:00001570 ROM:00001570 loc_1570: ; CODE XREF: irCommsEventLoop+C34j ROM:00001570 ; irCommsEventLoop+C38j ... ROM:00001570 mov.b #2, r1l ROM:00001572 mov.w #0xF028, r0 ROM:00001576 jmp sendPacket_and_go_on:24 ROM:0000157A ; --------------------------------------------------------------------------- ROM:0000157A ROM:0000157A rxed_0xFE: ; CODE XREF: irCommsEventLoop+33Aj ROM:0000157A cmp.b #1, r4l ; ROM:0000157A ; RIGHT NOW: ROM:0000157A ; r1 is direction << 8 ROM:0000157A ; r3l is command byte ROM:0000157A ; r4l is direction byte ROM:0000157A ; r4h, r0, e2 is payload len ROM:0000157A ; r5 is payload pointer ROM:0000157A ; e5 is 8 ROM:0000157A ; r6 = 0xB800 ROM:0000157C bne loc_182E:16 ROM:00001580 cmp.b #8, r4h ROM:00001582 bne loc_182E:16 ROM:00001586 jsr get_packet_data_pointer:24 ROM:0000158A mov.w r0, e0 ROM:0000158C mov.w e5, r1 ROM:0000158E mov.w e5, r0 ROM:00001590 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00001594 mov.b #2, r1l ROM:00001596 mov.w #0xFE00, r0 ROM:0000159A jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:0000159E mov.b #0xFE, r0l ; '¦' ROM:000015A0 bra loc_15E4:8 ROM:000015A2 ; --------------------------------------------------------------------------- ROM:000015A2 ROM:000015A2 rxed_0x2A: ; CODE XREF: irCommsEventLoop+340j ROM:000015A2 jsr get_packet_data_pointer:24 ROM:000015A6 mov.w r0, r1 ROM:000015A8 mov.w #0x28, e1 ; '(' ROM:000015AC mov.l #0x1830083, er0 ROM:000015B2 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:000015B2 ; ROM:000015B2 ; data is stored in two provided locations and read to RAM ROM:000015B2 ; each location includes a checksum right after the data (not inluded in length) ROM:000015B2 ; ROM:000015B2 ; if only one location has checksum-valid data, other is replaced with it ROM:000015B2 ; ROM:000015B2 ; if both appear valid, #0 is assumed dominant ROM:000015B2 ; ROM:000015B2 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:000015B6 mov.b #2, r1l ROM:000015B8 mov.w #0x2A28, r0 ROM:000015BC jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000015C0 mov.b #0x2A, r0l ; '*' ROM:000015C2 bra loc_15E4:8 ROM:000015C4 ; --------------------------------------------------------------------------- ROM:000015C4 ROM:000015C4 rxed_0x2C: ; CODE XREF: irCommsEventLoop+346j ROM:000015C4 jsr get_packet_data_pointer:24 ROM:000015C8 mov.w r0, r1 ROM:000015CA mov.w #0x28, e1 ; '(' ROM:000015CE mov.l #0x1830083, er0 ROM:000015D4 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:000015D4 ; ROM:000015D4 ; data is stored in two provided locations and read to RAM ROM:000015D4 ; each location includes a checksum right after the data (not inluded in length) ROM:000015D4 ; ROM:000015D4 ; if only one location has checksum-valid data, other is replaced with it ROM:000015D4 ; ROM:000015D4 ; if both appear valid, #0 is assumed dominant ROM:000015D4 ; ROM:000015D4 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:000015D8 mov.b #2, r1l ROM:000015DA mov.w #0x2A28, r0 ROM:000015DE jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:000015E2 mov.b #0x2C, r0l ; ',' ROM:000015E4 ROM:000015E4 loc_15E4: ; CODE XREF: irCommsEventLoop+7D2j ROM:000015E4 ; irCommsEventLoop+872j ... ROM:000015E4 mov.b r0l, @REQUESTED_POKEMON_ACTION_TYPE:16 ROM:000015E8 jmp loc_182E:24 ROM:000015EC ; --------------------------------------------------------------------------- ROM:000015EC ROM:000015EC rxed_0x0C: ; CODE XREF: irCommsEventLoop+34Cj ROM:000015EC mov.b @er5, r0h ; addrh ROM:000015EE sub.b r0l, r0l ROM:000015F0 mov.b @(1:16,er5), r1l ; addrl ROM:000015F4 extu.w r1 ROM:000015F6 add.w r1, r0 ROM:000015F8 mov.w r0, e6 ROM:000015FA mov.b @(2:16,er5), r5l ; length ROM:000015FE jsr get_packet_data_pointer:24 ROM:00001602 mov.w r0, e0 ROM:00001604 mov.b r5l, r1l ROM:00001606 extu.w r1 ROM:00001608 mov.w e6, r0 ROM:0000160A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000160E mov.b r5l, r0l ROM:00001610 mov.b #2, r1l ROM:00001612 mov.b #0xE, r0h ROM:00001614 jmp sendPacket_and_go_on:24 ROM:00001618 ; --------------------------------------------------------------------------- ROM:00001618 ROM:00001618 rxed_0x0E: ; CODE XREF: irCommsEventLoop+352j ROM:00001618 mov.w e2, r1 ROM:0000161A mov.w r1, r2 ROM:0000161C jsr get_packet_data_pointer:24 ROM:00001620 mov.w r2, r1 ROM:00001622 mov.w r0, e0 ROM:00001624 mov.w @PeerPlayEepromXferRemoteAddr:16, r0 ROM:00001628 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000162C mov.w e2, r0 ROM:0000162E mov.w @PeerPlayEepromXferLocalAddr:16, e0 ROM:00001632 add.w r0, e0 ROM:00001634 mov.w e0, @PeerPlayEepromXferLocalAddr:16 ROM:00001638 mov.w @PeerPlayEepromXferRemoteAddr:16, e0 ROM:0000163C add.w r0, e0 ROM:0000163E mov.w e0, @PeerPlayEepromXferRemoteAddr:16 ROM:00001642 mov.w @PeerPlayEepromXferSizeLeft:16, e0 ROM:00001646 sub.w r0, e0 ROM:00001648 mov.w e0, @PeerPlayEepromXferSizeLeft:16 ROM:0000164C mov.b @PeerPlayEepromXfreNumPacketsSentSoFar:16, r1l ; no ide why we're counting ROM:00001650 inc.b r1l ROM:00001652 mov.b r1l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:00001656 mov.w @PeerPlayEepromXferSizeLeft:16, e0 ROM:0000165A bne loc_17B0:16 ROM:0000165E mov.b @PeerPlayStage:16, r1l ; 1 - write our animated poke sprite to slave's eeprom ROM:0000165E ; 2 - read peer's animated poke sprite to our eeprom ROM:0000165E ; 3 - write our rendered name image to slave's eeprom ROM:0000165E ; 4 - read peer's rendered name image to our eeprom ROM:0000165E ; 5 - write current team data to slave's eeprom ROM:0000165E ; 6 - read current team data to slave's eeprom ROM:0000165E ; ROM:0000165E ; ROM:0000165E ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:00001662 cmp.b #2, r1l ROM:00001664 beq loc_1672:8 ROM:00001666 cmp.b #4, r1l ROM:00001668 beq loc_16A6:8 ROM:0000166A cmp.b #6, r1l ROM:0000166C bne loc_182E:16 ROM:00001670 bra we_are_master_and_eepr_data_has_been_exchanged_do_next_part_of_peer_play:8 ROM:00001672 ; --------------------------------------------------------------------------- ROM:00001672 ROM:00001672 loc_1672: ; CODE XREF: irCommsEventLoop+D8Ej ROM:00001672 mov.w #0xF580, r5 ROM:00001676 mov.w #0x993E, r0 ROM:0000167A mov.b #4, r1l ROM:0000167C mov.b r1l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:0000167C ; 2 - read peer's animated poke sprite to our eeprom ROM:0000167C ; 3 - write our rendered name image to slave's eeprom ROM:0000167C ; 4 - read peer's rendered name image to our eeprom ROM:0000167C ; 5 - write current team data to slave's eeprom ROM:0000167C ; 6 - read current team data to slave's eeprom ROM:0000167C ; ROM:0000167C ; ROM:0000167C ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:00001680 mov.w r0, @PeerPlayEepromXferLocalAddr:16 ROM:00001684 mov.w r5, @PeerPlayEepromXferRemoteAddr:16 ROM:00001688 mov.w #0x140, r0 ROM:0000168C mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:00001690 sub.b r0l, r0l ROM:00001692 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:00001696 mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:0000169A cmp.w #0x80, e6 ; 'Ç' ROM:0000169E bls send_pkt_0x0C:16 ROM:000016A2 jmp send_pkt_0x0C_len_0x80:24 ROM:000016A6 ; --------------------------------------------------------------------------- ROM:000016A6 ROM:000016A6 loc_16A6: ; CODE XREF: irCommsEventLoop+D92j ROM:000016A6 mov.w #0xDC00, r5 ROM:000016AA mov.w #0xCC00, e6 ROM:000016AE mov.b #6, r0l ROM:000016B0 mov.b r0l, @PeerPlayStage:16 ; 1 - write our animated poke sprite to slave's eeprom ROM:000016B0 ; 2 - read peer's animated poke sprite to our eeprom ROM:000016B0 ; 3 - write our rendered name image to slave's eeprom ROM:000016B0 ; 4 - read peer's rendered name image to our eeprom ROM:000016B0 ; 5 - write current team data to slave's eeprom ROM:000016B0 ; 6 - read current team data to slave's eeprom ROM:000016B0 ; ROM:000016B0 ; ROM:000016B0 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 ROM:000016B4 mov.w e6, @PeerPlayEepromXferLocalAddr:16 ROM:000016B8 mov.w r5, @PeerPlayEepromXferRemoteAddr:16 ROM:000016BC mov.w #0x224, r0 ROM:000016C0 mov.w r0, @PeerPlayEepromXferSizeLeft:16 ROM:000016C4 sub.b r0l, r0l ROM:000016C6 mov.b r0l, @PeerPlayEepromXfreNumPacketsSentSoFar:16 ; no ide why we're counting ROM:000016CA mov.w @PeerPlayEepromXferSizeLeft:16, e6 ROM:000016CE cmp.w #0x80, e6 ; 'Ç' ROM:000016D2 bls send_pkt_0x0C:16 ROM:000016D6 jmp send_pkt_0x0C_len_0x80:24 ROM:000016DA ; --------------------------------------------------------------------------- ROM:000016DA ROM:000016DA we_are_master_and_eepr_data_has_been_exchanged_do_next_part_of_peer_play: ROM:000016DA ; CODE XREF: irCommsEventLoop+D9Aj ROM:000016DA mov.w #DECOMPRESSION_BUFFER, r4 ROM:000016DE jsr get_packet_data_pointer:24 ROM:000016E2 mov.w r0, r5 ROM:000016E4 mov.l @stepCountTodaySoFar:16, er1 ROM:000016EA mov.l er1, @er0 ROM:000016EE mov.w @someWalkingRelatedState:16, e0 ; clamped to 9999 (what is this?) ROM:000016F2 mov.w e0, @(4:16,er0) ROM:000016F6 mov.w #0x8F00, r0 ROM:000016FA mov.w #0x10, r1 ROM:000016FE mov.w r4, e0 ROM:00001700 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001704 mov.w #0x37, r0 ; '7' ROM:00001708 add.w r5, r0 ROM:0000170A mov.b @(0xE:16,er4), r1l ROM:0000170E bld #0, r1l ROM:00001710 bst #0, @er0 ROM:00001714 mov.w @er4, r0 ROM:00001716 mov.w r0, @(0xE:16,er5) ROM:0000171A mov.b @(0xD:16,er4), r0l ROM:0000171E and.b #0x1F, r0l ROM:00001720 mov.b @(0x36:16,er5), r0h ROM:00001724 and.b #0xE0, r0h ROM:00001726 and.b #0x1F, r0l ROM:00001728 or.b r0l, r0h ROM:0000172A mov.b r0h, @(0x36:16,er5) ROM:0000172E mov.b @(0xD:16,er4), r0l ROM:00001732 rotl.b r0l ROM:00001734 rotl.b r0l ROM:00001736 rotl.b r0l ROM:00001738 and.b #3, r0l ROM:0000173A mov.b r0l, r1l ROM:0000173C mov.w #0x36, r0 ; '6' ROM:00001740 add.w r5, r0 ROM:00001742 mov.w #0x102, r2 ROM:00001746 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:0000174A mov.w #0x36, r0 ; '6' ROM:0000174E add.w r5, r0 ROM:00001750 mov.b @(0xE:16,er4), r1l ROM:00001754 bld #1, r1l ROM:00001756 bst #7, @er0 ROM:0000175A mov.w e4, e1 ROM:0000175C mov.w e6, e0 ROM:0000175E mov.w e3, r0 ROM:00001760 mov.w #RamCache_ED_data, r1 ROM:00001764 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00001764 ; ROM:00001764 ; data is stored in two provided locations and read to RAM ROM:00001764 ; each location includes a checksum right after the data (not inluded in length) ROM:00001764 ; ROM:00001764 ; if only one location has checksum-valid data, other is replaced with it ROM:00001764 ; ROM:00001764 ; if both appear valid, #0 is assumed dominant ROM:00001764 ; ROM:00001764 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00001768 mov.l @RamCache_ED_data:16, er0 ROM:0000176E mov.l er0, @(8:16,er5) ROM:00001774 mov.w @word_FFF856:16, r0 ROM:00001778 mov.w r0, @(0xC:16,er5) ROM:0000177C sub.w e6, e6 ROM:0000177E ROM:0000177E loc_177E: ; CODE XREF: irCommsEventLoop+EBEj ROM:0000177E mov.w e6, r0 ROM:00001780 mov.w #0x26, r1 ; '&' ROM:00001784 add.w r5, r1 ROM:00001786 add.w e6, r1 ROM:00001788 mov.b @(unk_FFF896,er0), r0l ROM:0000178C mov.b r0l, @er1 ROM:0000178E inc.w #1, e6 ROM:00001790 cmp.w #0x10, e6 ROM:00001794 blt loc_177E:8 ROM:00001796 ROM:00001796 loc_1796: ; CODE XREF: irCommsEventLoop+700j ROM:00001796 mov.w #0x10, e0 ROM:0000179A add.w r5, e0 ROM:0000179C mov.w #0x8F10, r0 ROM:000017A0 mov.w #0x16, r1 ROM:000017A4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000017A8 mov.b #2, r1l ROM:000017AA mov.w #0x1438, r0 ROM:000017AE bra sendPacket_and_go_on:8 ROM:000017B0 ; --------------------------------------------------------------------------- ROM:000017B0 ROM:000017B0 loc_17B0: ; CODE XREF: irCommsEventLoop+D84j ROM:000017B0 mov.w e0, e6 ROM:000017B2 cmp.w #0x80, e6 ; 'Ç' ROM:000017B6 bls send_pkt_0x0C:8 ROM:000017B8 ROM:000017B8 send_pkt_0x0C_len_0x80: ; CODE XREF: irCommsEventLoop+A80j ROM:000017B8 ; irCommsEventLoop+DCCj ... ROM:000017B8 mov.w #0x80, e6 ; 'Ç' ROM:000017BC ROM:000017BC send_pkt_0x0C: ; CODE XREF: irCommsEventLoop+A7Cj ROM:000017BC ; irCommsEventLoop+DC8j ... ROM:000017BC jsr get_packet_data_pointer:24 ; e6 = len ROM:000017C0 mov.w @PeerPlayEepromXferLocalAddr:16, r4 ROM:000017C4 mov.b r4h, @er0 ; addr to read ROM:000017C6 mov.b r4l, @(1:16,er0) ROM:000017CA mov.w e6, r1 ROM:000017CC mov.b r1l, @(2:16,er0) ; len to read ROM:000017D0 mov.b #2, r1l ROM:000017D2 ROM:000017D2 send_0x0C_packet: ROM:000017D2 mov.w #0xC03, r0 ROM:000017D6 bra sendPacket_and_go_on:8 ROM:000017D8 ; --------------------------------------------------------------------------- ROM:000017D8 ROM:000017D8 rxed_0x0A: ; CODE XREF: irCommsEventLoop+358j ROM:000017D8 mov.b @er5, r0l ; ROM:000017D8 ; RIGHT NOW: ROM:000017D8 ; r1 is direction << 8 ROM:000017D8 ; r3l is command byte ROM:000017D8 ; r4l is direction byte ROM:000017D8 ; r4h, r0, e2 is payload len ROM:000017D8 ; r5 is payload pointer ROM:000017D8 ; ROM:000017D8 ; . ROM:000017DA extu.w r0 ; first byte of payload ROM:000017DC mov.w r1, e6 ROM:000017DE add.w r0, e6 ; direction byte is high byte, first word of payload is low byteof address ROM:000017E0 mov.w e2, r1 ; payload len ROM:000017E2 dec.w #1, r1 ; XXX: this is how we got in - this dec produces 0xFFFF ROM:000017E4 inc.w #1, r5 ; pointer to data ROM:000017E6 mov.w r5, e0 ROM:000017E8 mov.w e6, r0 ROM:000017EA ROM:000017EA handle_uncompressed_write: ; CODE XREF: irCommsEventLoop+9D2j ROM:000017EA jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:000017EE ROM:000017EE send_0x04_ack_packet: ; CODE XREF: irCommsEventLoop+9BEj ROM:000017EE mov.b r4l, r1l ROM:000017F0 mov.w #0x400, r0 ROM:000017F4 bra sendPacket_and_go_on:8 ROM:000017F6 ; --------------------------------------------------------------------------- ROM:000017F6 ROM:000017F6 rxed_0x06: ; CODE XREF: irCommsEventLoop+362j ROM:000017F6 mov.b @er5, r0l ; ROM:000017F6 ; RIGHT NOW: ROM:000017F6 ; r1 is direction << 8 ROM:000017F6 ; r3l is command byte ROM:000017F6 ; r4l is direction byte ROM:000017F6 ; r4h, r0, e2 is payload len ROM:000017F6 ; r5 is payload pointer ROM:000017F6 ; r6 = 0xB800 ROM:000017F6 ; e5 = 8 ROM:000017F8 extu.w r0 ; first byte of payload ROM:000017FA mov.w r1, e4 ROM:000017FC add.w r0, e4 ; (direction << 8) + paylod[0] ROM:000017FE sub.b r3l, r3l ; index ROM:00001800 mov.b r4h, r0l ROM:00001802 extu.w r0 ROM:00001804 dec.w #1, r0 ; remaining payload len ROM:00001806 mov.w r0, e6 ROM:00001808 bra loc_181C:8 ROM:0000180A ; --------------------------------------------------------------------------- ROM:0000180A ROM:0000180A loc_180A: ; CODE XREF: irCommsEventLoop+F4Cj ROM:0000180A mov.b r3l, r0l ; loop index ROM:0000180C extu.w r0 ROM:0000180E add.w r5, r0 ; plus payload ROM:00001810 mov.w e4, r1 ROM:00001812 mov.b @(1:16,er0), r0l ; load byte (skip first byte that is destination) ROM:00001816 mov.b r0l, @er1 ROM:00001818 inc.w #1, e4 ; inc addr ROM:0000181A inc.b r3l ROM:0000181C ROM:0000181C loc_181C: ; CODE XREF: irCommsEventLoop+F32j ROM:0000181C mov.b r3l, r0l ROM:0000181E extu.w r0 ROM:00001820 cmp.w e6, r0 ROM:00001822 blt loc_180A:8 ROM:00001824 mov.b r4l, r1l ROM:00001826 mov.w #0x600, r0 ROM:0000182A ROM:0000182A sendPacket_and_go_on: ; CODE XREF: irCommsEventLoop+54Ej ROM:0000182A ; irCommsEventLoop+71Ej ... ROM:0000182A jsr sendPacket:24 ; (r0h = cmd, r0l = dataLen, r1l = directionByte) //packet is in TX buffer at 0xF8CE ROM:0000182E ROM:0000182E loc_182E: ; CODE XREF: irCommsEventLoop+1D0j ROM:0000182E ; irCommsEventLoop+1DAj ... ROM:0000182E mov.w @TMRW_TCNT:16, e6 ROM:00001832 rotl.w e6 ROM:00001834 rotl.w e6 ROM:00001836 and.w #1, e6 ROM:0000183A mov.w e6, r0 ROM:0000183C jsr screenShenenigans:24 ROM:00001840 sub.b r0l, r0l ROM:00001842 mov.b r0l, @NumBytesRxedsoFar:16 ROM:00001846 mov.w @TMRW_TCNT:16, r0 ROM:0000184A mov.w r0, @TimeWhenLAstByteRxed:16 ; as per TMRW ROM:0000184E ROM:0000184E out: ; CODE XREF: irCommsEventLoop+56j ROM:0000184E ; irCommsEventLoop+68j ... ROM:0000184E add.w #0xA, r7 ROM:00001852 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00001852 ; End of function irCommsEventLoop ROM:00001852 ROM:00001856 ROM:00001856 ; =============== S U B R O U T I N E ======================================= ROM:00001856 ROM:00001856 ROM:00001856 maybe_shutDownIr_then_performActionAsRequested: ROM:00001856 ; CODE XREF: irCommsEventLoop:loc_A74p ROM:00001856 ; irCommsEventLoop:rxed_0xF4p ROM:00001856 bclr #1, @IRQ_IRR1:8 ROM:0000185A mov.b #1, r0l ROM:0000185C mov.b r0l, @IO_PDR3:8 ROM:0000185E mov.b r0l, @SCI_SPCR:8 ROM:00001860 sub.b r0h, r0h ROM:00001862 mov.b r0h, @SCI_SCR3:8 ROM:00001864 bclr #6, @CKSTPR1:8 ROM:00001868 mov.w TMRW_TCRW, r1 ROM:0000186C bset #7, @er1 ROM:00001870 mov.b #lo8(TMRW_TMRW), r1l ROM:00001872 bclr #7, @er1 ROM:00001876 bclr #6, @CKSTPR2:8 ROM:0000187A jmp performActionAsRequestedByRemote:24 ROM:0000187A ; End of function maybe_shutDownIr_then_performActionAsRequested ROM:0000187A ROM:0000187E ROM:0000187E ; =============== S U B R O U T I N E ======================================= ROM:0000187E ROM:0000187E ROM:0000187E eraseCaughtPokemonanddowsedAndGiftedItems: ROM:0000187E ; CODE XREF: startWalkEepromActions+192p ROM:0000187E ; end_walk_action+74p ... ROM:0000187E mov.w #0xCE8C, r0 ROM:00001882 sub.b r1l, r1l ROM:00001884 mov.w #0x64, e0 ; 'd' ROM:00001888 jmp eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:00001888 ; End of function eraseCaughtPokemonanddowsedAndGiftedItems ROM:00001888 ROM:0000188C ROM:0000188C ; =============== S U B R O U T I N E ======================================= ROM:0000188C ROM:0000188C ROM:0000188C fill_some_eeprom_structs: ; CODE XREF: end_walk_action+78p ROM:0000188C ; pokemonJoinsEmptyWalkerWalk+13Ep ... ROM:0000188C mov.w #0xCF0C, r6 ROM:00001890 mov.b #0x18, r3l ROM:00001892 ROM:00001892 loc_1892: ; CODE XREF: fill_some_eeprom_structs+18j ROM:00001892 mov.w #0x84, r0 ; 'ä' ROM:00001896 add.w r6, r0 ROM:00001898 sub.b r1l, r1l ROM:0000189A jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:0000189E add.w #0x88, r6 ; 'ê' ROM:000018A2 dec.b r3l ROM:000018A4 bne loc_1892:8 ROM:000018A6 rts ROM:000018A6 ; End of function fill_some_eeprom_structs ROM:000018A6 ROM:000018A8 ROM:000018A8 ; =============== S U B R O U T I N E ======================================= ROM:000018A8 ROM:000018A8 ROM:000018A8 fill_eeprom_0xCEF0_to_CF0B_with_zero: ; CODE XREF: some_sort_of_eeprom_init+110p ROM:000018A8 mov.w #0xCEF0, r0 ROM:000018AC sub.b r1l, r1l ROM:000018AE mov.w #0x1C, e0 ROM:000018B2 jmp eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:000018B2 ; End of function fill_eeprom_0xCEF0_to_CF0B_with_zero ROM:000018B2 ROM:000018B6 ROM:000018B6 ; =============== S U B R O U T I N E ======================================= ROM:000018B6 ROM:000018B6 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:000018B6 ; ROM:000018B6 ; flag bits: ROM:000018B6 ; 0x01 - add overline ROM:000018B6 ; 0x02 - add underline ROM:000018B6 ; 0x04 - add bar on left ROM:000018B6 ; 0x08 - add bar on right ROM:000018B6 ; ROM:000018B6 ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:000018B6 ROM:000018B6 textImageAddBorders: ; CODE XREF: drawCurPokemonNameWithBorders+40p ROM:000018B6 ; drawPeerPokemonName+2Ep ... ROM:000018B6 idx = r5l ROM:000018B6 textAsImageDataRamPtr = r6 ROM:000018B6 flagsBits = r1l ROM:000018B6 val_0xFFFF = e1 ROM:000018B6 imgWidth = r5h ROM:000018B6 push.w textAsImageDataRamPtr ROM:000018B8 push.w r5 ROM:000018BA mov.w #0xFFFF, val_0xFFFF ROM:000018BE mov.b r0l, imgWidth ROM:000018C0 mov.w e0, textAsImageDataRamPtr ROM:000018C2 btst #0, flagsBits ROM:000018C4 beq flags_bit_0_resolved:8 ROM:000018C6 ROM:000018C6 flags_bit_0_set: ROM:000018C6 sub.b idx, idx ROM:000018C8 bra loc_18DC:8 ROM:000018CA ; --------------------------------------------------------------------------- ROM:000018CA ROM:000018CA loc_18CA: ; CODE XREF: textImageAddBorders+28j ROM:000018CA mov.b idx, r0l ROM:000018CC extu.w r0 ROM:000018CE shll.w r0 ; idx * 2 ROM:000018D0 add.w textAsImageDataRamPtr, r0 ROM:000018D2 mov.w @er0, e0 ROM:000018D4 or.w #0x101, e0 ; orr in 0x0101, so maybe - underline? ROM:000018D8 mov.w e0, @er0 ROM:000018DA inc.b idx ROM:000018DC ROM:000018DC loc_18DC: ; CODE XREF: textImageAddBorders+12j ROM:000018DC cmp.b imgWidth, idx ROM:000018DE bcs loc_18CA:8 ROM:000018E0 ROM:000018E0 flags_bit_0_resolved: ; CODE XREF: textImageAddBorders+Ej ROM:000018E0 mov.b imgWidth, r0l ROM:000018E2 extu.w r0 ROM:000018E4 mov.w r0, e0 ROM:000018E6 btst #2, flagsBits ROM:000018E8 beq flags_bit_2_resolved:8 ROM:000018EA ROM:000018EA flags_bit_2_set: ROM:000018EA mov.w val_0xFFFF, @er6 ROM:000018EC shll.w r0 ROM:000018EE add.w textAsImageDataRamPtr, r0 ROM:000018F0 mov.w val_0xFFFF, @er0 ROM:000018F2 ROM:000018F2 flags_bit_2_resolved: ; CODE XREF: textImageAddBorders+32j ROM:000018F2 btst #3, flagsBits ROM:000018F4 beq flags_bit_3_resolved:8 ROM:000018F6 ROM:000018F6 flags_bit_3_set: ROM:000018F6 mov.w e0, r0 ROM:000018F8 shll.w r0 ROM:000018FA add.w textAsImageDataRamPtr, r0 ROM:000018FC mov.w val_0xFFFF, @(-2:16,er0) ROM:00001900 mov.w e0, r0 ROM:00001902 shll.w r0 ROM:00001904 shll.w r0 ROM:00001906 add.w textAsImageDataRamPtr, r0 ROM:00001908 mov.w val_0xFFFF, @(-2:16,er0) ROM:0000190C ROM:0000190C flags_bit_3_resolved: ; CODE XREF: textImageAddBorders+3Ej ROM:0000190C btst #1, flagsBits ROM:0000190E beq flags_bit_1_resolved:8 ROM:00001910 ROM:00001910 flags_bit_1_set: ROM:00001910 sub.b idx, idx ROM:00001912 mov.w e0, r1 ROM:00001914 shll.w r1 ROM:00001916 bra loc_192C:8 ROM:00001918 ; --------------------------------------------------------------------------- ROM:00001918 ROM:00001918 loc_1918: ; CODE XREF: textImageAddBorders+78j ROM:00001918 mov.b idx, r0l ROM:0000191A extu.w r0 ROM:0000191C shll.w r0 ROM:0000191E add.w r1, r0 ROM:00001920 add.w textAsImageDataRamPtr, r0 ROM:00001922 mov.w @er0, e0 ROM:00001924 or.w #0x8080, e0 ; orr in 0x8080, so, overline? ROM:00001928 mov.w e0, @er0 ROM:0000192A inc.b idx ROM:0000192C ROM:0000192C loc_192C: ; CODE XREF: textImageAddBorders+60j ROM:0000192C cmp.b imgWidth, idx ROM:0000192E bcs loc_1918:8 ROM:00001930 ROM:00001930 flags_bit_1_resolved: ; CODE XREF: textImageAddBorders+58j ROM:00001930 pop.w r5 ROM:00001932 pop.w textAsImageDataRamPtr ROM:00001934 rts ROM:00001934 ; End of function textImageAddBorders ROM:00001934 ROM:00001936 ROM:00001936 ; =============== S U B R O U T I N E ======================================= ROM:00001936 ROM:00001936 ; (r0l = x, r0h = y) ROM:00001936 ROM:00001936 drawCurPokemonSmallAnimatedFrame: ; CODE XREF: pokemonArrivalHandlerLikely+Ap ROM:00001936 ; showPokemonFeelingsAndRandomFindings+1Ap ... ROM:00001936 mov.b r0l, r4h ROM:00001938 mov.b r0h, r4l ROM:0000193A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000193E mov.w #0xC0, r0 ; '+' ROM:00001942 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001946 mov.w r0, r3 ROM:00001948 mov.b @curUiFlags:16, r2l ; bits: ROM:00001948 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00001948 ; 0x02 - slower animation frame ROM:0000194C and.b #1, r2l ROM:0000194E mov.b #0xC0, r2h ; '+' ROM:00001950 mulxu.b r2h, r2 ROM:00001952 add.w #0x91BE, r2 ; cur pokemon small image (32x24) ROM:00001956 mov.w r0, e0 ROM:00001958 mov.w r2, r0 ROM:0000195A mov.w #0xC0, r1 ; '+' ROM:0000195E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001962 mov.w r3, e0 ROM:00001964 mov.b r4l, r0h ROM:00001966 mov.b r4h, r0l ROM:00001968 mov.w #0x1820, r1 ROM:0000196C jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001970 rts ROM:00001970 ; End of function drawCurPokemonSmallAnimatedFrame ROM:00001970 ROM:00001972 ROM:00001972 ; =============== S U B R O U T I N E ======================================= ROM:00001972 ROM:00001972 ; (r0l = x, r0h = y) ROM:00001972 ROM:00001972 drawCurPokemonSmallAnimatedFrameHorizFlipped: ROM:00001972 ; CODE XREF: drawHomeScreenMain+6Cp ROM:00001972 mov.b r0l, r4h ROM:00001974 mov.b r0h, r4l ROM:00001976 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000197A mov.w #0xC0, r0 ; '+' ROM:0000197E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001982 mov.w r0, r6 ROM:00001984 mov.b @curUiFlags:16, r5l ; bits: ROM:00001984 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00001984 ; 0x02 - slower animation frame ROM:00001988 and.b #1, r5l ROM:0000198A mov.b #0xC0, r5h ; '+' ROM:0000198C mulxu.b r5h, r5 ROM:0000198E add.w #0x91BE, r5 ROM:00001992 mov.w r0, e0 ROM:00001994 mov.w r5, r0 ROM:00001996 mov.w #0xC0, r1 ; '+' ROM:0000199A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000199E mov.w r6, e0 ROM:000019A0 mov.w #0x1820, r0 ROM:000019A4 jsr imageFlipHorizontal:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = imageData) ///height must be multiple of 8 ROM:000019A8 mov.w r6, e0 ROM:000019AA mov.b r4l, r0h ROM:000019AC mov.b r4h, r0l ROM:000019AE mov.w #0x1820, r1 ROM:000019B2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000019B6 rts ROM:000019B6 ; End of function drawCurPokemonSmallAnimatedFrameHorizFlipped ROM:000019B6 ROM:000019B8 ROM:000019B8 ; =============== S U B R O U T I N E ======================================= ROM:000019B8 ROM:000019B8 ; (r0l = x, r0h = y, r1l = availablePokemonIdx) ROM:000019B8 ROM:000019B8 drawRouteAvailablePokemon: ; CODE XREF: drawPokemonAndItemsScreen+B2p ROM:000019B8 push.w r6 ROM:000019BA mov.b r0l, r4h ROM:000019BC mov.b r0h, r4l ROM:000019BE mov.b r1l, r3l ROM:000019C0 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000019C4 mov.w #0xC0, r0 ; '+' ROM:000019C8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000019CC mov.w r0, r6 ROM:000019CE mov.b r3l, r1l ROM:000019D0 extu.w r1 ROM:000019D2 mov.w #0x180, e1 ROM:000019D6 mulxu.w e1, er1 ROM:000019D8 mov.b @curUiFlags:16, r3l ; bits: ROM:000019D8 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000019D8 ; 0x02 - slower animation frame ROM:000019DC and.b #1, r3l ROM:000019DE mov.b r3l, r2l ROM:000019E0 mov.b #0xC0, r2h ; '+' ROM:000019E2 mulxu.b r2h, r2 ROM:000019E4 add.w r2, r1 ROM:000019E6 mov.w #0x9A7E, r3 ROM:000019EA add.w r1, r3 ROM:000019EC mov.w r0, e0 ROM:000019EE mov.w r3, r0 ROM:000019F0 mov.w #0xC0, r1 ; '+' ROM:000019F4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000019F8 mov.w r6, e0 ROM:000019FA mov.b r4l, r0h ROM:000019FC mov.b r4h, r0l ROM:000019FE mov.w #0x1820, r1 ROM:00001A02 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001A06 pop.w r6 ROM:00001A08 rts ROM:00001A08 ; End of function drawRouteAvailablePokemon ROM:00001A08 ROM:00001A0A ROM:00001A0A ; =============== S U B R O U T I N E ======================================= ROM:00001A0A ROM:00001A0A ; (r0l = x, r0h = y, r1l = bool flipHorizontal) ROM:00001A0A ROM:00001A0A drawPeerPlayPokemonAnimationFrame: ; CODE XREF: drawPeerPlay:loc_65C8p ROM:00001A0A mov.b r0l, r4l ROM:00001A0C mov.b r0h, r5h ROM:00001A0E mov.b r1l, r5l ROM:00001A10 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001A14 mov.w #0xC0, r0 ; '+' ROM:00001A18 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001A1C mov.w r0, r3 ROM:00001A1E mov.w r0, e0 ROM:00001A20 mov.b @curUiFlags:16, r0l ; bits: ROM:00001A20 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00001A20 ; 0x02 - slower animation frame ROM:00001A24 and.b #1, r0l ROM:00001A26 mov.b #0xC0, r0h ; '+' ROM:00001A28 mulxu.b r0h, r0 ROM:00001A2A add.w #0xF400, r0 ROM:00001A2E mov.w #0xC0, r1 ; '+' ROM:00001A32 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001A36 mov.b r5l, r5l ROM:00001A38 beq loc_1A44:8 ROM:00001A3A mov.w r3, e0 ROM:00001A3C mov.w #0x1820, r0 ROM:00001A40 jsr imageFlipHorizontal:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = imageData) ///height must be multiple of 8 ROM:00001A44 ROM:00001A44 loc_1A44: ; CODE XREF: drawPeerPlayPokemonAnimationFrame+2Ej ROM:00001A44 mov.w r3, e1 ROM:00001A46 mov.b r5h, r0h ROM:00001A48 mov.b r4l, r0l ROM:00001A4A mov.w #0x18, r1 ROM:00001A4E mov.w #0x20, e0 ; ' ' ROM:00001A52 jsr drawImageInSomeWeirdWay:24 ; (r0l = x, r0h = y, e0 = imgWidth, r1 = imgHeight, e1 = imgData) ROM:00001A56 rts ROM:00001A56 ; End of function drawPeerPlayPokemonAnimationFrame ROM:00001A56 ROM:00001A58 ROM:00001A58 ; =============== S U B R O U T I N E ======================================= ROM:00001A58 ROM:00001A58 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:00001A58 ROM:00001A58 drawCurPokemonNameWithBorders: ; CODE XREF: battleScreenDraw+2E6p ROM:00001A58 ; battleScreenDraw+404p ... ROM:00001A58 push.w r4 ROM:00001A5A push.w r5 ROM:00001A5C push.w r6 ROM:00001A5E mov.b r0l, r2l ROM:00001A60 mov.b r0h, r5l ROM:00001A62 mov.b r1l, r5h ROM:00001A64 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001A68 mov.w #0x140, r0 ROM:00001A6C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001A70 mov.w r0, r6 ROM:00001A72 cmp.b #0x30, r5l ; '0' ROM:00001A74 bne loc_1A7C:8 ROM:00001A76 jsr someFullLcdDrawingThin2:24 ROM:00001A7A bra loc_1A80:8 ROM:00001A7C ; --------------------------------------------------------------------------- ROM:00001A7C ROM:00001A7C loc_1A7C: ; CODE XREF: drawCurPokemonNameWithBorders+1Cj ROM:00001A7C jsr someFullLcdDrawingThing:24 ROM:00001A80 ROM:00001A80 loc_1A80: ; CODE XREF: drawCurPokemonNameWithBorders+22j ROM:00001A80 mov.w #0x993E, r4 ROM:00001A84 mov.w r4, r0 ROM:00001A86 mov.w #0x140, r1 ROM:00001A8A mov.w r6, e0 ROM:00001A8C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001A90 mov.b r5h, r1l ROM:00001A92 mov.w r6, e0 ROM:00001A94 mov.w #0x1050, r0 ROM:00001A98 jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001A98 ; ROM:00001A98 ; flag bits: ROM:00001A98 ; 0x01 - add overline ROM:00001A98 ; 0x02 - add underline ROM:00001A98 ; 0x04 - add bar on left ROM:00001A98 ; 0x08 - add bar on right ROM:00001A98 ; ROM:00001A98 ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001A9C mov.w r6, e0 ROM:00001A9E mov.b r5l, r0h ROM:00001AA0 mov.b r2l, r0l ROM:00001AA2 mov.w #0x1050, r1 ROM:00001AA6 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001AAA pop.w r6 ROM:00001AAC pop.w r5 ROM:00001AAE pop.w r4 ROM:00001AB0 rts ROM:00001AB0 ; End of function drawCurPokemonNameWithBorders ROM:00001AB0 ROM:00001AB2 ROM:00001AB2 ; =============== S U B R O U T I N E ======================================= ROM:00001AB2 ROM:00001AB2 ; (r0l = x, r0h = y, r1l = borderFlagBits) ROM:00001AB2 ROM:00001AB2 drawPeerPokemonName: ; CODE XREF: drawPeerPlay+7Ap ROM:00001AB2 mov.b r0l, r4l ROM:00001AB4 mov.b r0h, r5h ROM:00001AB6 mov.b r1l, r5l ROM:00001AB8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001ABC mov.w #0x140, r0 ROM:00001AC0 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001AC4 mov.w r0, r6 ROM:00001AC6 jsr someFullLcdDrawingThing:24 ROM:00001ACA mov.w #0x140, r1 ROM:00001ACE mov.w r6, e0 ROM:00001AD0 mov.w #0xF580, r0 ROM:00001AD4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001AD8 mov.b r5l, r1l ROM:00001ADA mov.w r6, e0 ROM:00001ADC mov.w #0x1050, r0 ROM:00001AE0 jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001AE0 ; ROM:00001AE0 ; flag bits: ROM:00001AE0 ; 0x01 - add overline ROM:00001AE0 ; 0x02 - add underline ROM:00001AE0 ; 0x04 - add bar on left ROM:00001AE0 ; 0x08 - add bar on right ROM:00001AE0 ; ROM:00001AE0 ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001AE4 mov.w r6, e0 ROM:00001AE6 mov.b r5h, r0h ROM:00001AE8 mov.b r4l, r0l ROM:00001AEA mov.w #0x1050, r1 ROM:00001AEE jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001AF2 rts ROM:00001AF2 ; End of function drawPeerPokemonName ROM:00001AF2 ROM:00001AF4 ROM:00001AF4 ; =============== S U B R O U T I N E ======================================= ROM:00001AF4 ROM:00001AF4 ; (r0l = x, r0h = y, r1l = borderBits) ROM:00001AF4 ROM:00001AF4 showEventPokeNameAndMaybeAnimation: ; CODE XREF: drawItemMapStampOrRouteReceived+8Cp ROM:00001AF4 ; drawPokemonAndItemsScreen+FEp ROM:00001AF4 mov.b r0l, r4l ROM:00001AF6 mov.b r0h, r2l ROM:00001AF8 mov.b r1l, r2h ROM:00001AFA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001AFE mov.w #0x140, r0 ROM:00001B02 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001B06 mov.w r0, r3 ROM:00001B08 cmp.b #0x30, r2l ; '0' ROM:00001B0A bne loc_1B12:8 ROM:00001B0C jsr someFullLcdDrawingThin2:24 ROM:00001B10 bra loc_1B16:8 ROM:00001B12 ; --------------------------------------------------------------------------- ROM:00001B12 ROM:00001B12 loc_1B12: ; CODE XREF: showEventPokeNameAndMaybeAnimation+16j ROM:00001B12 jsr someFullLcdDrawingThing:24 ROM:00001B16 ROM:00001B16 loc_1B16: ; CODE XREF: showEventPokeNameAndMaybeAnimation+1Cj ROM:00001B16 mov.w #0xBC00, r0 ROM:00001B1A mov.w #0x140, r1 ROM:00001B1E mov.w r3, e0 ROM:00001B20 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001B24 mov.b r2h, r1l ROM:00001B26 mov.w r3, e0 ROM:00001B28 mov.w #0x1050, r0 ROM:00001B2C jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001B2C ; ROM:00001B2C ; flag bits: ROM:00001B2C ; 0x01 - add overline ROM:00001B2C ; 0x02 - add underline ROM:00001B2C ; 0x04 - add bar on left ROM:00001B2C ; 0x08 - add bar on right ROM:00001B2C ; ROM:00001B2C ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001B30 mov.w r3, e0 ROM:00001B32 mov.b r2l, r0h ROM:00001B34 mov.b r4l, r0l ROM:00001B36 mov.w #0x1050, r1 ROM:00001B3A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001B3E rts ROM:00001B3E ; End of function showEventPokeNameAndMaybeAnimation ROM:00001B3E ROM:00001B40 ROM:00001B40 ; =============== S U B R O U T I N E ======================================= ROM:00001B40 ROM:00001B40 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:00001B40 ROM:00001B40 drawNameOfEventPokemon: ; CODE XREF: battleScreenDraw+266p ROM:00001B40 ; battleScreenDraw+326p ... ROM:00001B40 push.w r5 ROM:00001B42 push.w r6 ROM:00001B44 mov.b r0l, r2l ROM:00001B46 mov.b r0h, r5l ROM:00001B48 mov.b r1l, r5h ROM:00001B4A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001B4E mov.w #0x140, r0 ROM:00001B52 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001B56 mov.w r0, r6 ROM:00001B58 cmp.b #0x30, r5l ; '0' ROM:00001B5A bne loc_1B62:8 ROM:00001B5C jsr someFullLcdDrawingThin2:24 ROM:00001B60 bra loc_1B66:8 ROM:00001B62 ; --------------------------------------------------------------------------- ROM:00001B62 ROM:00001B62 loc_1B62: ; CODE XREF: drawNameOfEventPokemon+1Aj ROM:00001B62 jsr someFullLcdDrawingThing:24 ROM:00001B66 ROM:00001B66 loc_1B66: ; CODE XREF: drawNameOfEventPokemon+20j ROM:00001B66 mov.w #0xC6FC, r0 ROM:00001B6A mov.w #0x140, r1 ROM:00001B6E mov.w r6, e0 ROM:00001B70 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001B74 mov.b r5h, r1l ROM:00001B76 mov.w r6, e0 ROM:00001B78 mov.w #0x1050, r0 ROM:00001B7C jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001B7C ; ROM:00001B7C ; flag bits: ROM:00001B7C ; 0x01 - add overline ROM:00001B7C ; 0x02 - add underline ROM:00001B7C ; 0x04 - add bar on left ROM:00001B7C ; 0x08 - add bar on right ROM:00001B7C ; ROM:00001B7C ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001B80 mov.w r6, e0 ROM:00001B82 mov.b r5l, r0h ROM:00001B84 mov.b r2l, r0l ROM:00001B86 mov.w #0x1050, r1 ROM:00001B8A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001B8E pop.w r6 ROM:00001B90 pop.w r5 ROM:00001B92 rts ROM:00001B92 ; End of function drawNameOfEventPokemon ROM:00001B92 ROM:00001B94 ROM:00001B94 ; =============== S U B R O U T I N E ======================================= ROM:00001B94 ROM:00001B94 ; (r0l = x, r0h = y) ROM:00001B94 ROM:00001B94 drawItemSymbolOnScreen: ; CODE XREF: showPokemonFeelingsAndRandomFindings+46p ROM:00001B94 mov.b r0l, r4h ROM:00001B96 mov.b r0h, r4l ROM:00001B98 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001B9C mov.w #0x10, r0 ROM:00001BA0 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001BA4 mov.w r0, r6 ROM:00001BA6 mov.w #0x488, r5 ROM:00001BAA mov.w r0, e0 ROM:00001BAC mov.w r5, r0 ROM:00001BAE mov.w #0x10, r1 ROM:00001BB2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001BB6 mov.w r6, e0 ROM:00001BB8 mov.b r4l, r0h ROM:00001BBA mov.b r4h, r0l ROM:00001BBC mov.w #0x808, r1 ROM:00001BC0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001BC4 rts ROM:00001BC4 ; End of function drawItemSymbolOnScreen ROM:00001BC4 ROM:00001BC6 ROM:00001BC6 ; =============== S U B R O U T I N E ======================================= ROM:00001BC6 ROM:00001BC6 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00001BC6 ; ROM:00001BC6 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:00001BC6 ROM:00001BC6 drawNameOfRouteAvailablePokemon: ; CODE XREF: battleScreenDraw+25Ap ROM:00001BC6 ; battleScreenDraw+318p ... ROM:00001BC6 push.w r5 ROM:00001BC8 push.w r6 ROM:00001BCA mov.b r0l, r2h ROM:00001BCC mov.b r0h, r5l ROM:00001BCE mov.b r1l, r5h ROM:00001BD0 mov.b r1h, r2l ROM:00001BD2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001BD6 mov.w #0x180, r0 ROM:00001BDA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001BDE mov.w r0, r6 ROM:00001BE0 cmp.b #0x30, r5l ; '0' ROM:00001BE2 bne loc_1BEA:8 ROM:00001BE4 jsr someFullLcdDrawingThin2:24 ROM:00001BE8 bra loc_1BEE:8 ROM:00001BEA ; --------------------------------------------------------------------------- ROM:00001BEA ROM:00001BEA loc_1BEA: ; CODE XREF: drawNameOfRouteAvailablePokemon+1Cj ROM:00001BEA jsr someFullLcdDrawingThing:24 ROM:00001BEE ROM:00001BEE loc_1BEE: ; CODE XREF: drawNameOfRouteAvailablePokemon+22j ROM:00001BEE mov.b r5h, r0l ROM:00001BF0 extu.w r0 ROM:00001BF2 mov.w #0x140, e0 ; each name string imag eis this size ROM:00001BF6 mulxu.w e0, er0 ROM:00001BF8 add.w #0xA4FE, r0 ; names of pokemon available on this route ROM:00001BFC mov.w #0x140, r1 ROM:00001C00 mov.w r6, e0 ROM:00001C02 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001C06 mov.b r2l, r1l ROM:00001C08 mov.w r6, e0 ROM:00001C0A mov.w #0x1050, r0 ROM:00001C0E jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001C0E ; ROM:00001C0E ; flag bits: ROM:00001C0E ; 0x01 - add overline ROM:00001C0E ; 0x02 - add underline ROM:00001C0E ; 0x04 - add bar on left ROM:00001C0E ; 0x08 - add bar on right ROM:00001C0E ; ROM:00001C0E ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001C12 mov.w r6, e0 ROM:00001C14 mov.b r5l, r0h ROM:00001C16 mov.b r2h, r0l ROM:00001C18 mov.w #0x1050, r1 ROM:00001C1C jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001C20 pop.w r6 ROM:00001C22 pop.w r5 ROM:00001C24 rts ROM:00001C24 ; End of function drawNameOfRouteAvailablePokemon ROM:00001C24 ROM:00001C26 ROM:00001C26 ; =============== S U B R O U T I N E ======================================= ROM:00001C26 ROM:00001C26 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00001C26 ROM:00001C26 drawRouteAvailableItemName: ; CODE XREF: drawCurSelectedItemNameForSwitchScreen+52p ROM:00001C26 ; dowsingDraw+1EAp ... ROM:00001C26 push.w r4 ROM:00001C28 push.w r5 ROM:00001C2A push.l er6 ROM:00001C2E mov.b r0l, r4h ROM:00001C30 mov.b r0h, r4l ROM:00001C32 mov.b r1l, r5l ROM:00001C34 mov.b r1h, r2l ROM:00001C36 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001C3A mov.w #0x180, e6 ROM:00001C3E mov.w e6, r0 ROM:00001C40 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001C44 mov.w r0, r6 ROM:00001C46 mov.b r5l, r1l ROM:00001C48 extu.w r1 ; itemIdx ROM:00001C4A mulxu.w e6, er1 ; itemIdx * 0x180 ROM:00001C4C mov.w #0xA8BE, r5 ; base of images for "item gotten" message ROM:00001C50 add.w r1, r5 ROM:00001C52 mov.w e6, r1 ROM:00001C54 mov.w r0, e0 ROM:00001C56 mov.w r5, r0 ROM:00001C58 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001C5C mov.b r2l, r1l ROM:00001C5E mov.w r6, e0 ROM:00001C60 mov.w #0x1060, r0 ROM:00001C64 jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001C64 ; ROM:00001C64 ; flag bits: ROM:00001C64 ; 0x01 - add overline ROM:00001C64 ; 0x02 - add underline ROM:00001C64 ; 0x04 - add bar on left ROM:00001C64 ; 0x08 - add bar on right ROM:00001C64 ; ROM:00001C64 ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001C68 mov.w r6, e0 ROM:00001C6A mov.b r4l, r0h ROM:00001C6C mov.b r4h, r0l ROM:00001C6E mov.w #0x1060, r1 ROM:00001C72 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001C76 pop.l er6 ROM:00001C7A pop.w r5 ROM:00001C7C pop.w r4 ROM:00001C7E rts ROM:00001C7E ; End of function drawRouteAvailableItemName ROM:00001C7E ROM:00001C80 ROM:00001C80 ; =============== S U B R O U T I N E ======================================= ROM:00001C80 ROM:00001C80 ; (r0l = imgWidth, r0h = imgHeight, r1l = flagsBits) ROM:00001C80 ROM:00001C80 showRxedItemName: ; CODE XREF: drawItemMapStampOrRouteReceived+A0p ROM:00001C80 ; dowsingDraw+1DCp ... ROM:00001C80 mov.b r0l, r4l ROM:00001C82 mov.b r0h, r2h ROM:00001C84 mov.b r1l, r2l ROM:00001C86 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001C8A mov.w #0x180, r0 ROM:00001C8E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001C92 mov.w r0, r3 ROM:00001C94 mov.w r0, e0 ROM:00001C96 mov.w #0xBD48, r0 ROM:00001C9A mov.w #0x180, r1 ROM:00001C9E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001CA2 mov.b r2l, r1l ROM:00001CA4 mov.w r3, e0 ROM:00001CA6 mov.w #0x1060, r0 ROM:00001CAA jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:00001CAA ; ROM:00001CAA ; flag bits: ROM:00001CAA ; 0x01 - add overline ROM:00001CAA ; 0x02 - add underline ROM:00001CAA ; 0x04 - add bar on left ROM:00001CAA ; 0x08 - add bar on right ROM:00001CAA ; ROM:00001CAA ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:00001CAE mov.w r3, e0 ROM:00001CB0 mov.b r2h, r0h ROM:00001CB2 mov.b r4l, r0l ROM:00001CB4 mov.w #0x1060, r1 ROM:00001CB8 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001CBC rts ROM:00001CBC ; End of function showRxedItemName ROM:00001CBC ROM:00001CBE ROM:00001CBE ; =============== S U B R O U T I N E ======================================= ROM:00001CBE ROM:00001CBE ; (r0l = x, r0h = y) ROM:00001CBE ROM:00001CBE drawLargeItemChest: ; CODE XREF: drawItemMapStampOrRouteReceived+96p ROM:00001CBE ; drawPokemonAndItemsScreen+13Ap ROM:00001CBE mov.b r0l, r4h ROM:00001CC0 mov.b r0h, r4l ROM:00001CC2 mov.w #0x1910, r2 ROM:00001CC6 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001CCA mov.w #0xC0, r0 ; '+' ROM:00001CCE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001CD2 mov.w r0, r3 ROM:00001CD4 mov.w r0, e0 ROM:00001CD6 mov.w r2, r0 ROM:00001CD8 mov.w #0xC0, r1 ; '+' ROM:00001CDC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001CE0 mov.w r3, e0 ROM:00001CE2 mov.b r4l, r0h ROM:00001CE4 mov.b r4h, r0l ROM:00001CE6 mov.w #0x1820, r1 ROM:00001CEA jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001CEE rts ROM:00001CEE ; End of function drawLargeItemChest ROM:00001CEE ROM:00001CF0 ROM:00001CF0 ; =============== S U B R O U T I N E ======================================= ROM:00001CF0 ROM:00001CF0 ; (r0l = x, r0h = y) ROM:00001CF0 ROM:00001CF0 drawLargePresentItem: ; CODE XREF: drawPeerPlay+17Ap ROM:00001CF0 ; drawPeerPlay+18Cp ROM:00001CF0 mov.b r0l, r4h ROM:00001CF2 mov.b r0h, r4l ROM:00001CF4 mov.w #0x1A90, r5 ROM:00001CF8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001CFC mov.w #0xC0, r0 ; '+' ROM:00001D00 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001D04 mov.w r0, r6 ROM:00001D06 mov.w r0, e0 ROM:00001D08 mov.w r5, r0 ROM:00001D0A mov.w #0xC0, r1 ; '+' ROM:00001D0E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001D12 mov.w r6, e0 ROM:00001D14 mov.b r4l, r0h ROM:00001D16 mov.b r4h, r0l ROM:00001D18 mov.w #0x1820, r1 ROM:00001D1C jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001D20 rts ROM:00001D20 ; End of function drawLargePresentItem ROM:00001D20 ROM:00001D22 ROM:00001D22 ; =============== S U B R O U T I N E ======================================= ROM:00001D22 ROM:00001D22 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:00001D22 ROM:00001D22 setThatWeveParticipatedInAGivenEvent: ; CODE XREF: irCommsEventLoop+8A6p ROM:00001D22 ; irCommsEventLoop+8E0p ... ROM:00001D22 push.w r6 ROM:00001D24 push.w r5 ROM:00001D26 mov.w r0, r5 ROM:00001D28 mov.b r1l, r6l ROM:00001D2A beq loc_1D74:8 ROM:00001D2C mov.b r6l, r6h ROM:00001D2E shlr.b r6h ROM:00001D30 shlr.b r6h ROM:00001D32 shlr.b r6h ROM:00001D34 mov.w #0x68, e1 ; 'h' ROM:00001D38 mov.w r5, r1 ROM:00001D3A mov.l #0x1ED00ED, er0 ROM:00001D40 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00001D40 ; ROM:00001D40 ; data is stored in two provided locations and read to RAM ROM:00001D40 ; each location includes a checksum right after the data (not inluded in length) ROM:00001D40 ; ROM:00001D40 ; if only one location has checksum-valid data, other is replaced with it ROM:00001D40 ; ROM:00001D40 ; if both appear valid, #0 is assumed dominant ROM:00001D40 ; ROM:00001D40 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00001D44 mov.b r6h, r0l ROM:00001D46 extu.w r0 ROM:00001D48 mov.w #0x38, r1 ; '8' ROM:00001D4C add.w r5, r1 ROM:00001D4E add.w r0, r1 ROM:00001D50 and.b #7, r6l ROM:00001D52 mov.w #1, r0 ROM:00001D56 ROM:00001D56 loc_1D56: ; CODE XREF: setThatWeveParticipatedInAGivenEvent+3Aj ROM:00001D56 dec.b r6l ROM:00001D58 bmi loc_1D5E:8 ROM:00001D5A shll.w r0 ROM:00001D5C bra loc_1D56:8 ROM:00001D5E ; --------------------------------------------------------------------------- ROM:00001D5E ROM:00001D5E loc_1D5E: ; CODE XREF: setThatWeveParticipatedInAGivenEvent+36j ROM:00001D5E mov.b @er1, r0h ROM:00001D60 or.b r0l, r0h ROM:00001D62 mov.b r0h, @er1 ROM:00001D64 mov.w r5, r1 ROM:00001D66 mov.w #0x68, e1 ; 'h' ROM:00001D6A mov.l #0x1ED00ED, er0 ROM:00001D70 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001D70 ; ROM:00001D70 ; see docs for readRedundantDataFromEeprom for format info ROM:00001D74 ROM:00001D74 loc_1D74: ; CODE XREF: setThatWeveParticipatedInAGivenEvent+8j ROM:00001D74 pop.w r5 ROM:00001D76 pop.w r6 ROM:00001D78 rts ROM:00001D78 ; End of function setThatWeveParticipatedInAGivenEvent ROM:00001D78 ROM:00001D7A ROM:00001D7A ; =============== S U B R O U T I N E ======================================= ROM:00001D7A ROM:00001D7A ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:00001D7A ; ROM:00001D7A ; always false for index 0 ROM:00001D7A ROM:00001D7A checkForWhetherWeveParticipatedInAGivenEvent: ROM:00001D7A ; CODE XREF: irCommsEventLoop+B0Cp ROM:00001D7A ; irCommsEventLoop+B54p ... ROM:00001D7A push.w r6 ROM:00001D7C push.w r5 ROM:00001D7E mov.w r0, r5 ROM:00001D80 mov.b r1l, r6l ROM:00001D82 beq loc_1DC2:8 ROM:00001D84 mov.b r6l, r6h ROM:00001D86 shlr.b r6h ROM:00001D88 shlr.b r6h ROM:00001D8A shlr.b r6h ; idx / 8 ROM:00001D8C mov.w #0x68, e1 ; 'h' ROM:00001D90 mov.w r5, r1 ROM:00001D92 mov.l #0x1ED00ED, er0 ROM:00001D98 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00001D98 ; ROM:00001D98 ; data is stored in two provided locations and read to RAM ROM:00001D98 ; each location includes a checksum right after the data (not inluded in length) ROM:00001D98 ; ROM:00001D98 ; if only one location has checksum-valid data, other is replaced with it ROM:00001D98 ; ROM:00001D98 ; if both appear valid, #0 is assumed dominant ROM:00001D98 ; ROM:00001D98 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00001D9C and.b #7, r6l ; idx & 7 ROM:00001D9E mov.b r6l, r0l ROM:00001DA0 mov.w #1, e0 ROM:00001DA4 ROM:00001DA4 loc_1DA4: ; CODE XREF: checkForWhetherWeveParticipatedInAGivenEvent+30j ROM:00001DA4 dec.b r0l ROM:00001DA6 bmi loc_1DAC:8 ROM:00001DA8 shll.w e0 ROM:00001DAA bra loc_1DA4:8 ; (1 << (idx & 7)) ROM:00001DAC ; --------------------------------------------------------------------------- ROM:00001DAC ROM:00001DAC loc_1DAC: ; CODE XREF: checkForWhetherWeveParticipatedInAGivenEvent+2Cj ROM:00001DAC mov.b r6h, r6l ROM:00001DAE extu.w r6 ROM:00001DB0 add.w #0x38, r5 ; '8' ROM:00001DB4 add.w r6, r5 ; 0x38 + (idx / 8) ROM:00001DB6 mov.b @er5, r5l ; read the byte ROM:00001DB8 extu.w r5 ROM:00001DBA and.w e0, r5 ; see if the bit is set ROM:00001DBC beq loc_1DC2:8 ROM:00001DBE mov.b #1, r0l ROM:00001DC0 bra loc_1DC4:8 ROM:00001DC2 ; --------------------------------------------------------------------------- ROM:00001DC2 ROM:00001DC2 loc_1DC2: ; CODE XREF: checkForWhetherWeveParticipatedInAGivenEvent+8j ROM:00001DC2 ; checkForWhetherWeveParticipatedInAGivenEvent+42j ROM:00001DC2 sub.b r0l, r0l ROM:00001DC4 ROM:00001DC4 loc_1DC4: ; CODE XREF: checkForWhetherWeveParticipatedInAGivenEvent+46j ROM:00001DC4 pop.w r5 ROM:00001DC6 pop.w r6 ROM:00001DC8 rts ROM:00001DC8 ; End of function checkForWhetherWeveParticipatedInAGivenEvent ROM:00001DC8 ROM:00001DCA ROM:00001DCA ; =============== S U B R O U T I N E ======================================= ROM:00001DCA ROM:00001DCA ; (r0l = imgWidth, r0h = imgHeight, e0 = imageDataInRam, r1l = "by") //negative is up ROM:00001DCA ROM:00001DCA moveImageVerticaly: ; CODE XREF: dowsingStartHandleLikely+112p ROM:00001DCA imgData = r6 ROM:00001DCA push.w r4 ROM:00001DCC push.w imgData ROM:00001DCE mov.w r0, r5 ROM:00001DD0 mov.b r1l, r3l ROM:00001DD2 mov.w e0, imgData ROM:00001DD4 mov.b r5l, r2l ROM:00001DD6 extu.w r2 ROM:00001DD8 shll.w r2 ; imgWidth * 2 ROM:00001DDA mov.w r2, e5 ROM:00001DDC mov.b r3l, r2l ; by ROM:00001DDE exts.w r2 ROM:00001DE0 mov.w r2, r4 ; by ROM:00001DE2 mov.b r5h, r2l ROM:00001DE4 extu.w r2 ROM:00001DE6 shar.w r2 ROM:00001DE8 shar.w r2 ROM:00001DEA shar.w r2 ROM:00001DEC mov.w r2, e4 ; imgHeight / 8 ROM:00001DEE mov.b r5l, r2l ROM:00001DF0 extu.w r2 ROM:00001DF2 shll.w r2 ROM:00001DF4 mov.w r2, e6 ; imgWidth * 2 ROM:00001DF6 mov.b r3l, r3l ROM:00001DF8 bge by_is_nonnegative:8 ROM:00001DFA ; [00000066 BYTES: BEGIN OF AREA DEAD_CODE_FOR_US. PRESS KEYPAD "-" TO COLLAPSE] ROM:00001DFA ROM:00001DFA by_is_negative: ROM:00001DFA sub.b r5h, r5h ROM:00001DFC mov.w r4, e1 ; "by" ROM:00001DFE neg.w e1 ; -by ROM:00001E00 mov.w e1, e2 ROM:00001E02 mov.w e4, e1 ROM:00001E04 dec.w #1, e1 ; imgHeight-1 ROM:00001E06 mov.w r4, r3 ROM:00001E08 add.w #8, r3 ; by + 8 ROM:00001E0C bra loc_1E56:8 ROM:00001E0E ; --------------------------------------------------------------------------- ROM:00001E0E ROM:00001E0E loc_1E0E: ; CODE XREF: moveImageVerticaly+94j ROM:00001E0E sub.b r5l, r5l ROM:00001E10 bra loc_1E4A:8 ROM:00001E12 ; --------------------------------------------------------------------------- ROM:00001E12 ROM:00001E12 loc_1E12: ; CODE XREF: moveImageVerticaly+86j ROM:00001E12 mov.b r5l, r0l ROM:00001E14 extu.w r0 ROM:00001E16 add.w imgData, r0 ROM:00001E18 mov.w e2, r1 ROM:00001E1A jsr lsrByteAtPtr:24 ; (r0 = ptr, r1 shrBy) // *(uint8_t*)ptr >>= by ROM:00001E1E mov.b r5h, r0l ROM:00001E20 extu.w r0 ROM:00001E22 cmp.w e1, r0 ROM:00001E24 beq loc_1E48:8 ROM:00001E26 mov.b r5l, r0l ROM:00001E28 extu.w r0 ROM:00001E2A mov.w r0, r4 ROM:00001E2C add.w imgData, r0 ROM:00001E2E mov.w e6, e0 ROM:00001E30 add.w r4, e0 ROM:00001E32 add.w imgData, e0 ROM:00001E34 mov.w e0, r1 ROM:00001E36 mov.b @er1, r1l ROM:00001E38 mov.b r3l, r1h ROM:00001E3A ROM:00001E3A loc_1E3A: ; CODE XREF: moveImageVerticaly+76j ROM:00001E3A dec.b r1h ROM:00001E3C bmi loc_1E42:8 ROM:00001E3E shll.b r1l ROM:00001E40 bra loc_1E3A:8 ROM:00001E42 ; --------------------------------------------------------------------------- ROM:00001E42 ROM:00001E42 loc_1E42: ; CODE XREF: moveImageVerticaly+72j ROM:00001E42 mov.b @er0, r1h ROM:00001E44 or.b r1l, r1h ROM:00001E46 mov.b r1h, @er0 ROM:00001E48 ROM:00001E48 loc_1E48: ; CODE XREF: moveImageVerticaly+5Aj ROM:00001E48 inc.b r5l ROM:00001E4A ROM:00001E4A loc_1E4A: ; CODE XREF: moveImageVerticaly+46j ROM:00001E4A mov.b r5l, r0l ROM:00001E4C extu.w r0 ROM:00001E4E cmp.w e5, r0 ROM:00001E50 blt loc_1E12:8 ROM:00001E52 add.w e6, imgData ROM:00001E54 inc.b r5h ROM:00001E56 ROM:00001E56 loc_1E56: ; CODE XREF: moveImageVerticaly+42j ROM:00001E56 mov.b r5h, r0l ROM:00001E58 extu.w r0 ROM:00001E5A cmp.w e4, r0 ROM:00001E5C bge out_done:8 ROM:00001E5E bra loc_1E0E:8 ROM:00001E5E ; [00000066 BYTES: END OF AREA DEAD_CODE_FOR_US. PRESS KEYPAD "-" TO COLLAPSE] ROM:00001E60 ; --------------------------------------------------------------------------- ROM:00001E60 ROM:00001E60 by_is_nonnegative: ; CODE XREF: moveImageVerticaly+2Ej ROM:00001E60 mov.w e4, r0 ROM:00001E62 dec.w #1, r0 ROM:00001E64 mov.b r5l, r1l ROM:00001E66 extu.w r1 ROM:00001E68 mulxu.w r1, er0 ROM:00001E6A shll.w r0 ROM:00001E6C add.w r0, imgData ROM:00001E6E shlr.b r5h ROM:00001E70 shlr.b r5h ROM:00001E72 shlr.b r5h ROM:00001E74 mov.w #8, r3 ROM:00001E78 sub.w r4, r3 ROM:00001E7A bra loc_1EC0:8 ROM:00001E7C ; --------------------------------------------------------------------------- ROM:00001E7C ROM:00001E7C loc_1E7C: ; CODE XREF: moveImageVerticaly+F8j ROM:00001E7C sub.b r5l, r5l ROM:00001E7E bra loc_1EB4:8 ROM:00001E80 ; --------------------------------------------------------------------------- ROM:00001E80 ROM:00001E80 loc_1E80: ; CODE XREF: moveImageVerticaly+F0j ROM:00001E80 mov.b r5l, r0l ROM:00001E82 extu.w r0 ROM:00001E84 add.w imgData, r0 ROM:00001E86 mov.w r4, r1 ROM:00001E88 jsr lslByteAtPtr:24 ; (r0 = ptr, r1 shlBy) // *(uint8_t*)ptr <<= by ROM:00001E8C cmp.b #1, r5h ROM:00001E8E beq loc_1EB2:8 ROM:00001E90 mov.b r5l, r0l ROM:00001E92 extu.w r0 ROM:00001E94 mov.w r0, e4 ROM:00001E96 add.w imgData, r0 ROM:00001E98 mov.w e4, e0 ROM:00001E9A sub.w e6, e0 ROM:00001E9C add.w imgData, e0 ROM:00001E9E mov.w e0, r1 ROM:00001EA0 mov.b @er1, r1l ROM:00001EA2 mov.b r3l, r1h ROM:00001EA4 ROM:00001EA4 loc_1EA4: ; CODE XREF: moveImageVerticaly+E0j ROM:00001EA4 dec.b r1h ROM:00001EA6 bmi loc_1EAC:8 ROM:00001EA8 shlr.b r1l ROM:00001EAA bra loc_1EA4:8 ROM:00001EAC ; --------------------------------------------------------------------------- ROM:00001EAC ROM:00001EAC loc_1EAC: ; CODE XREF: moveImageVerticaly+DCj ROM:00001EAC mov.b @er0, r1h ROM:00001EAE or.b r1l, r1h ROM:00001EB0 mov.b r1h, @er0 ROM:00001EB2 ROM:00001EB2 loc_1EB2: ; CODE XREF: moveImageVerticaly+C4j ROM:00001EB2 inc.b r5l ROM:00001EB4 ROM:00001EB4 loc_1EB4: ; CODE XREF: moveImageVerticaly+B4j ROM:00001EB4 mov.b r5l, r0l ROM:00001EB6 extu.w r0 ROM:00001EB8 cmp.w e5, r0 ROM:00001EBA blt loc_1E80:8 ROM:00001EBC sub.w e6, imgData ROM:00001EBE dec.b r5h ROM:00001EC0 ROM:00001EC0 loc_1EC0: ; CODE XREF: moveImageVerticaly+B0j ROM:00001EC0 mov.b r5h, r5h ROM:00001EC2 bne loc_1E7C:8 ROM:00001EC4 ROM:00001EC4 out_done: ; CODE XREF: moveImageVerticaly+92j ROM:00001EC4 pop.w imgData ROM:00001EC6 pop.w r4 ROM:00001EC8 rts ROM:00001EC8 ; End of function moveImageVerticaly ROM:00001EC8 ROM:00001ECA ROM:00001ECA ; =============== S U B R O U T I N E ======================================= ROM:00001ECA ROM:00001ECA ; (ptr *pokeStruct) //returns 3 if all 3 slots are full, else idx of first empty slot ROM:00001ECA ROM:00001ECA findFirstEmptyslotInCaughtPokeList: ; CODE XREF: recordPokeCaughtNormal+44p ROM:00001ECA mov.w r0, r2 ROM:00001ECC sub.b r1l, r1l ROM:00001ECE bra loc_1EE6:8 ROM:00001ED0 ; --------------------------------------------------------------------------- ROM:00001ED0 ROM:00001ED0 loc_1ED0: ; CODE XREF: findFirstEmptyslotInCaughtPokeList+1Ej ROM:00001ED0 extu.w r1 ROM:00001ED2 mov.w r1, r0 ROM:00001ED4 mov.w #0x10, e0 ROM:00001ED8 mulxu.w e0, er0 ROM:00001EDA add.w r2, r0 ROM:00001EDC mov.w @er0, e0 ROM:00001EDE bne loc_1EE4:8 ROM:00001EE0 mov.b r1l, r0l ROM:00001EE2 bra locret_1EEC:8 ROM:00001EE4 ; --------------------------------------------------------------------------- ROM:00001EE4 ROM:00001EE4 loc_1EE4: ; CODE XREF: findFirstEmptyslotInCaughtPokeList+14j ROM:00001EE4 inc.b r1l ROM:00001EE6 ROM:00001EE6 loc_1EE6: ; CODE XREF: findFirstEmptyslotInCaughtPokeList+4j ROM:00001EE6 cmp.b #3, r1l ROM:00001EE8 bcs loc_1ED0:8 ROM:00001EEA mov.b #3, r0l ROM:00001EEC ROM:00001EEC locret_1EEC: ; CODE XREF: findFirstEmptyslotInCaughtPokeList+18j ROM:00001EEC rts ROM:00001EEC ; End of function findFirstEmptyslotInCaughtPokeList ROM:00001EEC ROM:00001EEE ROM:00001EEE ; =============== S U B R O U T I N E ======================================= ROM:00001EEE ROM:00001EEE ; (r0l = n) -> r0 ROM:00001EEE ROM:00001EEE getItemIdForNthItemOnRoute: ; CODE XREF: addRandomGift+70p ROM:00001EEE ; calculateAndApplyPeerGift+18Ap ROM:00001EEE mov.b r0l, r2l ROM:00001EF0 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001EF4 mov.w #0xBE, r0 ; '+' ROM:00001EF8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001EFC mov.w r0, r3 ROM:00001EFE mov.w r0, e0 ROM:00001F00 mov.w #0xBE, r1 ; '+' ; read current party and route info ROM:00001F04 mov.w #0x8F00, r0 ROM:00001F08 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001F0C extu.w r2 ROM:00001F0E shll.w r2 ROM:00001F10 mov.w #0x8C, r0 ; 'î' ROM:00001F14 add.w r3, r0 ROM:00001F16 add.w r2, r0 ROM:00001F18 mov.w @er0, r0 ROM:00001F1A rts ROM:00001F1A ; End of function getItemIdForNthItemOnRoute ROM:00001F1A ROM:00001F1C ROM:00001F1C ; =============== S U B R O U T I N E ======================================= ROM:00001F1C ROM:00001F1C ; (r0 = data* /* 4 bytes per item, 2 are item number, 2 unknown*/) -> freeindex or 3 if none ROM:00001F1C ROM:00001F1C findFreeItemSlotIdxInStarndardFoundItemsArray: ROM:00001F1C ; CODE XREF: probablyPokeFoundRandomItem+1Ep ROM:00001F1C ; addRandomGift+94p ... ROM:00001F1C mov.w r0, r2 ROM:00001F1E sub.b r1l, r1l ROM:00001F20 bra loc_1F36:8 ROM:00001F22 ; --------------------------------------------------------------------------- ROM:00001F22 ROM:00001F22 loc_1F22: ; CODE XREF: findFreeItemSlotIdxInStarndardFoundItemsArray+1Cj ROM:00001F22 extu.w r1 ROM:00001F24 mov.w r1, r0 ROM:00001F26 shll.w r0 ROM:00001F28 shll.w r0 ROM:00001F2A add.w r2, r0 ROM:00001F2C mov.w @er0, e0 ROM:00001F2E bne loc_1F34:8 ROM:00001F30 mov.b r1l, r0l ROM:00001F32 bra locret_1F3C:8 ROM:00001F34 ; --------------------------------------------------------------------------- ROM:00001F34 ROM:00001F34 loc_1F34: ; CODE XREF: findFreeItemSlotIdxInStarndardFoundItemsArray+12j ROM:00001F34 inc.b r1l ROM:00001F36 ROM:00001F36 loc_1F36: ; CODE XREF: findFreeItemSlotIdxInStarndardFoundItemsArray+4j ROM:00001F36 cmp.b #3, r1l ROM:00001F38 bcs loc_1F22:8 ROM:00001F3A mov.b #3, r0l ROM:00001F3C ROM:00001F3C locret_1F3C: ; CODE XREF: findFreeItemSlotIdxInStarndardFoundItemsArray+16j ROM:00001F3C rts ROM:00001F3C ; End of function findFreeItemSlotIdxInStarndardFoundItemsArray ROM:00001F3C ROM:00001F3E ROM:00001F3E ; =============== S U B R O U T I N E ======================================= ROM:00001F3E ROM:00001F3E ; (r0l = watts) ROM:00001F3E ROM:00001F3E addWatts: ; CODE XREF: maybeFoundSomeEventItem+96p ROM:00001F3E ; addRandomGift+C4p ... ROM:00001F3E extu.w r0 ROM:00001F40 mov.w @RamCache_curWatts:16, e0 ROM:00001F44 add.w r0, e0 ROM:00001F46 mov.w e0, @RamCache_curWatts:16 ROM:00001F4A mov.w e0, r0 ROM:00001F4C cmp.w #9999, r0 ROM:00001F50 bls loc_1F5A:8 ROM:00001F52 mov.w #9999, r0 ROM:00001F56 mov.w r0, @RamCache_curWatts:16 ROM:00001F5A ROM:00001F5A loc_1F5A: ; CODE XREF: addWatts+12j ROM:00001F5A mov.w #0x18, e1 ROM:00001F5E mov.w #RamCache_totalSteps, r1 ROM:00001F62 mov.l #0x2560156, er0 ROM:00001F68 jmp writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00001F68 ; End of function addWatts ; ROM:00001F68 ; see docs for readRedundantDataFromEeprom for format info ROM:00001F6C ROM:00001F6C ; =============== S U B R O U T I N E ======================================= ROM:00001F6C ROM:00001F6C ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:00001F6C ROM:00001F6C drawNumberAndWattsymbolOnscreen: ; CODE XREF: battleScreenDraw+44Cp ROM:00001F6C ; dowsingDraw+1BEp ... ROM:00001F6C ROM:00001F6C ; FUNCTION CHUNK AT ROM:00008AB0 SIZE 0000000C BYTES ROM:00001F6C ROM:00001F6C push.w r4 ROM:00001F6E push.l er5 ROM:00001F72 push.l er6 ROM:00001F76 mov.b r0l, r4h ROM:00001F78 mov.b r0h, r4l ROM:00001F7A mov.w e0, r6 ROM:00001F7C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00001F80 mov.w #0x140, r0 ROM:00001F84 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00001F88 mov.w r0, r5 ROM:00001F8A jsr someFullLcdDrawingThing:24 ROM:00001F8E sub.b r0l, r0l ROM:00001F90 push.w r0 ROM:00001F92 mov.w #0x85E, r1 ROM:00001F96 mov.w #0x2801, r0 ROM:00001F9A jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00001F9E adds #2, sp ROM:00001FA0 mov.b #1, r0l ROM:00001FA2 push.w r0 ROM:00001FA4 extu.l er6 ROM:00001FA6 mov.l er6, er1 ROM:00001FA8 mov.b r4h, r0l ROM:00001FAA add.b #8, r0l ROM:00001FAC mov.b r4l, r0h ROM:00001FAE bsr drawNumberOnscreen:8 ; ( ROM:00001FAE ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:00001FAE ; r0h = y ROM:00001FAE ; er1 = number ROM:00001FAE ; [sp] = bool addOverline ROM:00001FAE ; ) ROM:00001FB0 adds #2, sp ROM:00001FB2 mov.w #0x420, r6 ; watt image ROM:00001FB6 mov.w r6, r0 ROM:00001FB8 mov.w #0x40, r1 ; '@' ROM:00001FBC mov.w r5, e0 ROM:00001FBE jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00001FC2 sub.b r6l, r6l ROM:00001FC4 ROM:00001FC4 loc_1FC4: ; CODE XREF: drawNumberAndWattsymbolOnscreen+6Cj ROM:00001FC4 mov.b r6l, r0l ROM:00001FC6 extu.w r0 ROM:00001FC8 shll.w r0 ROM:00001FCA add.w r5, r0 ROM:00001FCC mov.w @er0, e0 ROM:00001FCE or.w #0x101, e0 ROM:00001FD2 mov.w e0, @er0 ROM:00001FD4 inc.b r6l ROM:00001FD6 cmp.b #0x10, r6l ROM:00001FD8 bcs loc_1FC4:8 ROM:00001FDA mov.b r4l, r0h ROM:00001FDC add.b #0x10, r4h ROM:00001FDE mov.b r4h, r0l ROM:00001FE0 mov.w r5, e0 ROM:00001FE2 mov.w #0x1010, r1 ROM:00001FE6 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00001FEA jmp common_epilogue_4:24 ROM:00001FEA ; End of function drawNumberAndWattsymbolOnscreen ROM:00001FEA ROM:00001FEE ROM:00001FEE ; =============== S U B R O U T I N E ======================================= ROM:00001FEE ROM:00001FEE ; ( ROM:00001FEE ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:00001FEE ; r0h = y ROM:00001FEE ; er1 = number ROM:00001FEE ; [sp] = bool addOverline ROM:00001FEE ; ) ROM:00001FEE ROM:00001FEE drawNumberOnscreen: ; CODE XREF: drawNumberAndWattsymbolOnscreen+42p ROM:00001FEE ; drawhomeScreenSmallIconsOnBottom+1E0p ... ROM:00001FEE characterImages = r4 ROM:00001FEE push.w r3 ROM:00001FF0 push.w characterImages ROM:00001FF2 push.w r5 ROM:00001FF4 push.w r6 ROM:00001FF6 mov.b r0l, r3l ROM:00001FF8 mov.b r0h, r2l ROM:00001FFA mov.l er1, er5 ROM:00001FFC jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00002000 mov.w #0x140, r0 ROM:00002004 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002008 mov.w r0, characterImages ROM:0000200A mov.w r0, e0 ROM:0000200C mov.w #0x280, r0 ; read all characters we can render (numbers + punctuation) ROM:00002010 mov.w #0x140, r1 ; all 13 chars, 32 bytes each ROM:00002014 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002018 mov.b @(0xB:16,sp), r0l ROM:0000201C beq no_overline_needed:8 ROM:0000201E ROM:0000201E do_add_overline: ROM:0000201E mov.w characterImages, r6 ROM:00002020 mov.b #0xA, r1l ROM:00002022 ROM:00002022 loc_2022: ; CODE XREF: drawNumberOnscreen+54j ROM:00002022 jsr orr_0x0101_into_three_words:24 ; used in number rendernig to add overline ROM:00002026 jsr orr_0x0101_into_three_words:24 ; used in number rendernig to add overline ROM:0000202A mov.w @er6, r0 ROM:0000202C or.w #0x101, r0 ROM:00002030 mov.w r0, @er6 ROM:00002032 inc.w #2, r6 ROM:00002034 mov.w @er6, r0 ROM:00002036 or.w #0x101, r0 ROM:0000203A mov.w r0, @er6 ROM:0000203C add.w #0x12, r6 ROM:00002040 dec.b r1l ROM:00002042 bne loc_2022:8 ROM:00002044 ROM:00002044 no_overline_needed: ; CODE XREF: drawNumberOnscreen+2Ej ROM:00002044 mov.l er5, er5 ROM:00002046 bne number_is_nonzero:8 ROM:00002048 ROM:00002048 just_draw_zero: ROM:00002048 mov.w characterImages, e0 ROM:0000204A mov.b r3l, r0l ROM:0000204C mov.w #0x1008, r1 ROM:00002050 mov.b r2l, r0h ROM:00002052 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00002056 bra out:8 ROM:00002058 ; --------------------------------------------------------------------------- ROM:00002058 ROM:00002058 number_still_nonzero: ; CODE XREF: drawNumberOnscreen+9Cj ROM:00002058 mov.l er5, er0 ROM:0000205A sub.l er1, er1 ROM:0000205C mov.b #0xA, r1l ROM:0000205E jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00002062 extu.w r1 ROM:00002064 mov.w #0x20, e1 ; ' ' ; each char is 0x20 bytes ROM:00002068 mulxu.w e1, er1 ROM:0000206A add.w characterImages, r1 ROM:0000206C mov.w r1, e0 ROM:0000206E mov.w #0x1008, r1 ROM:00002072 mov.b r2l, r0h ROM:00002074 mov.b r3l, r0l ROM:00002076 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000207A mov.l er5, er0 ROM:0000207C sub.l er1, er1 ROM:0000207E mov.b #0xA, r1l ROM:00002080 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00002084 mov.l er0, er5 ROM:00002086 add.b #-8, r3l ROM:00002088 ROM:00002088 number_is_nonzero: ; CODE XREF: drawNumberOnscreen+58j ROM:00002088 mov.l er5, er5 ROM:0000208A bne number_still_nonzero:8 ROM:0000208C ROM:0000208C out: ; CODE XREF: drawNumberOnscreen+68j ROM:0000208C pop.w r6 ROM:0000208E pop.w r5 ROM:00002090 pop.w characterImages ROM:00002092 pop.w r3 ROM:00002094 rts ROM:00002094 ; End of function drawNumberOnscreen ROM:00002094 ROM:00002096 ROM:00002096 ; =============== S U B R O U T I N E ======================================= ROM:00002096 ROM:00002096 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00002096 ; ROM:00002096 ; //always drawn at x = 0 ROM:00002096 ; ROM:00002096 ROM:00002096 drawLargeMessagePotentiallyWithBlinkingCursor: ROM:00002096 ; CODE XREF: battleScreenDraw+366p ROM:00002096 ; battleScreenDraw:battle_show_msgp ... ROM:00002096 textImageMemoryPtr = r6 ROM:00002096 auxiliaryMemoryPtr = r4 ROM:00002096 push.w r3 ROM:00002098 push.w auxiliaryMemoryPtr ROM:0000209A push.w r5 ROM:0000209C push.l er6 ROM:000020A0 mov.b r0l, r2l ROM:000020A2 mov.b r0h, r5l ROM:000020A4 mov.b r1l, r3h ROM:000020A6 mov.b r1h, r3l ROM:000020A8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000020AC mov.w #0x180, e6 ; each message line is this big ROM:000020B0 mov.w e6, r0 ROM:000020B2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000020B6 mov.w r0, textImageMemoryPtr ROM:000020B8 mov.w #0x18, r0 ROM:000020BC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000020C0 mov.w r0, auxiliaryMemoryPtr ROM:000020C2 mov.b r5l, r0l ROM:000020C4 extu.w r0 ROM:000020C6 mulxu.w e6, er0 ; message offset ROM:000020C8 mov.w #0x2530, r5 ; messages start here ROM:000020CC add.w r0, r5 ROM:000020CE mov.w e6, r1 ROM:000020D0 mov.w r5, r0 ROM:000020D2 mov.w textImageMemoryPtr, e0 ROM:000020D4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000020D8 mov.b r3h, r1l ROM:000020DA mov.w textImageMemoryPtr, e0 ROM:000020DC mov.w #0x1060, r0 ROM:000020E0 jsr textImageAddBorders:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = textAsImageDataInRam, r1l = flagsBits) ROM:000020E0 ; ROM:000020E0 ; flag bits: ROM:000020E0 ; 0x01 - add overline ROM:000020E0 ; 0x02 - add underline ROM:000020E0 ; 0x04 - add bar on left ROM:000020E0 ; 0x08 - add bar on right ROM:000020E0 ; ROM:000020E0 ; assumes we have 16 pixels of height (that is amount of data is 4 * width) ROM:000020E4 mov.b r3l, r3l ROM:000020E6 beq loc_215E:8 ROM:000020E8 mov.b @curUiFlags:16, r0l ; bits: ROM:000020E8 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000020E8 ; 0x02 - slower animation frame ROM:000020EC extu.w r0 ROM:000020EE shar.w r0 ROM:000020F0 btst #0, r0l ROM:000020F2 beq loc_215E:8 ROM:000020F4 mov.w #0x638, r0 ROM:000020F8 mov.w #0x18, r1 ROM:000020FC mov.w auxiliaryMemoryPtr, e0 ROM:000020FE loopIdx = r5l ROM:000020FE jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002102 sub.b loopIdx, loopIdx ROM:00002104 ROM:00002104 loc_2104: ; CODE XREF: drawLargeMessagePotentiallyWithBlinkingCursor+A6j ROM:00002104 mov.b loopIdx, r0l ROM:00002106 extu.w r0 ROM:00002108 mov.w r0, e6 ROM:0000210A shll.w r0 ROM:0000210C add.w textImageMemoryPtr, r0 ROM:0000210E mov.w e6, r3 ROM:00002110 add.w auxiliaryMemoryPtr, r3 ROM:00002112 add.w #0x10, r3 ROM:00002116 mov.b @er3, r1l ; u8 @ 0x648[loopIdx] ROM:00002118 mov.b @(0x170:16,er0), r1h ROM:0000211C and.b r1l, r1h ROM:0000211E mov.b r1h, @(0x170:16,er0) ROM:00002122 mov.b loopIdx, r0l ROM:00002124 extu.w r0 ROM:00002126 shll.w r0 ROM:00002128 inc.w #1, r0 ROM:0000212A add.w textImageMemoryPtr, r0 ROM:0000212C mov.b @er3, r3l ROM:0000212E mov.b @(0x170:16,er0), r1l ROM:00002132 and.b r3l, r1l ROM:00002134 mov.b r1l, @(0x170:16,er0) ROM:00002138 inc.b loopIdx ROM:0000213A cmp.b #8, loopIdx ROM:0000213C bcs loc_2104:8 ROM:0000213E sub.b loopIdx, loopIdx ROM:00002140 ROM:00002140 loc_2140: ; CODE XREF: drawLargeMessagePotentiallyWithBlinkingCursor+C6j ROM:00002140 mov.b loopIdx, r0l ROM:00002142 extu.w r0 ROM:00002144 mov.w r0, e6 ROM:00002146 add.w textImageMemoryPtr, r0 ROM:00002148 mov.w auxiliaryMemoryPtr, r1 ROM:0000214A add.w e6, r1 ROM:0000214C mov.b @er1, r1l ROM:0000214E mov.b @(0x170:16,er0), r1h ROM:00002152 or.b r1l, r1h ROM:00002154 mov.b r1h, @(0x170:16,er0) ROM:00002158 inc.b loopIdx ROM:0000215A cmp.b #0x10, loopIdx ROM:0000215C bcs loc_2140:8 ROM:0000215E ROM:0000215E loc_215E: ; CODE XREF: drawLargeMessagePotentiallyWithBlinkingCursor+50j ROM:0000215E ; drawLargeMessagePotentiallyWithBlinkingCursor+5Cj ROM:0000215E mov.w textImageMemoryPtr, e0 ROM:00002160 mov.w #0x1060, r1 ROM:00002164 mov.b r2l, r0h ROM:00002166 sub.b r0l, r0l ROM:00002168 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000216C pop.l er6 ROM:00002170 pop.w r5 ROM:00002172 pop.w auxiliaryMemoryPtr ROM:00002174 pop.w r3 ROM:00002176 rts ROM:00002176 ; End of function drawLargeMessagePotentiallyWithBlinkingCursor ROM:00002176 ROM:00002178 ROM:00002178 ; =============== S U B R O U T I N E ======================================= ROM:00002178 ROM:00002178 ; (r0l = imgWidth, r0h = imgHeight, e0 = imageData) ///height must be multiple of 8 ROM:00002178 ROM:00002178 imageFlipHorizontal: ; CODE XREF: drawCurPokemonSmallAnimatedFrameHorizFlipped+32p ROM:00002178 ; drawPeerPlayPokemonAnimationFrame+36p ... ROM:00002178 ROM:00002178 ; FUNCTION CHUNK AT ROM:00002660 SIZE 0000000C BYTES ROM:00002178 ROM:00002178 imgWidth = r6l ROM:00002178 imgWidthDiv2 = e1 ROM:00002178 imgWidthMul2 = e4 ROM:00002178 imgData = r5 ROM:00002178 imgWidthMinusOne = r2h ROM:00002178 backwardsIterator = r6h ROM:00002178 imgHeightDiv8 = e5 ROM:00002178 push.w r3 ROM:0000217A push.w r4 ROM:0000217C push.l er5 ROM:00002180 push.w r6 ROM:00002182 mov.b r0l, imgWidth ROM:00002184 mov.w e0, imgData ROM:00002186 sub.b r1l, r1l ROM:00002188 mov.b r1l, r2l ROM:0000218A mov.b imgWidth, r1l ROM:0000218C extu.w r1 ROM:0000218E shar.w r1 ROM:00002190 mov.w r1, imgWidthDiv2 ROM:00002192 mov.b r0h, r0l ROM:00002194 extu.w r0 ROM:00002196 shar.w r0 ROM:00002198 shar.w r0 ROM:0000219A shar.w r0 ROM:0000219C mov.w r0, imgHeightDiv8 ROM:0000219E mov.b imgWidth, r0l ROM:000021A0 add.b #0xFF, r0l ROM:000021A2 mov.b r0l, imgWidthMinusOne ROM:000021A4 mov.b imgWidth, r0l ROM:000021A6 forwardsIterator = r6l ROM:000021A6 extu.w r0 ROM:000021A8 shll.w r0 ROM:000021AA mov.w r0, imgWidthMul2 ROM:000021AC bra loc_21F2:8 ROM:000021AE ; --------------------------------------------------------------------------- ROM:000021AE ROM:000021AE loc_21AE: ; CODE XREF: imageFlipHorizontal+80j ROM:000021AE mov.b imgWidthMinusOne, backwardsIterator ROM:000021B0 sub.b forwardsIterator, forwardsIterator ROM:000021B2 bra loc_21E2:8 ROM:000021B4 ; --------------------------------------------------------------------------- ROM:000021B4 ROM:000021B4 loc_21B4: ; CODE XREF: imageFlipHorizontal+70j ROM:000021B4 mov.b forwardsIterator, r0l ROM:000021B6 extu.w r0 ROM:000021B8 shll.w r0 ROM:000021BA add.w imgData, r0 ; imgData + forwardsIterator * 2 ROM:000021BC mov.w r0, r4 ROM:000021BE mov.b backwardsIterator, r3l ROM:000021C0 extu.w r3 ROM:000021C2 shll.w r3 ROM:000021C4 add.w imgData, r3 ; imgData + backwardsIterator * 2 ROM:000021C6 mov.w @er3, e0 ; load some pixels from far end ROM:000021C8 ROM:000021C8 very_dumb_swap_of_values: ; r0 == r4 on entry... ROM:000021C8 mov.w @er0, r1 ROM:000021CA xor.w e0, r1 ; *near ^= farVal ROM:000021CC mov.w r1, @er0 ROM:000021CE mov.w r1, r0 ROM:000021D0 mov.w @er3, e0 ; *far ^= *near ROM:000021D2 xor.w r0, e0 ROM:000021D4 mov.w e0, @er3 ROM:000021D6 mov.w e0, r3 ROM:000021D8 mov.w @er4, r0 ; *near ^= far ROM:000021DA xor.w r3, r0 ROM:000021DC mov.w r0, @er4 ROM:000021DE inc.b forwardsIterator ROM:000021E0 dec.b backwardsIterator ROM:000021E2 ROM:000021E2 loc_21E2: ; CODE XREF: imageFlipHorizontal+3Aj ROM:000021E2 mov.b forwardsIterator, r0l ROM:000021E4 extu.w r0 ROM:000021E6 cmp.w imgWidthDiv2, r0 ROM:000021E8 blt loc_21B4:8 ROM:000021EA add.w imgWidthMul2, imgData ROM:000021EC mov.b r2l, r0l ROM:000021EE inc.b r0l ROM:000021F0 mov.b r0l, r2l ROM:000021F2 ROM:000021F2 loc_21F2: ; CODE XREF: imageFlipHorizontal+34j ROM:000021F2 mov.b r2l, r0l ROM:000021F4 extu.w r0 ROM:000021F6 cmp.w imgHeightDiv8, r0 ROM:000021F8 blt loc_21AE:8 ROM:000021FA jmp enother_common_epilogue:24 ROM:000021FA ; End of function imageFlipHorizontal ROM:000021FA ROM:000021FE ROM:000021FE ; =============== S U B R O U T I N E ======================================= ROM:000021FE ROM:000021FE ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:000021FE ROM:000021FE drawLowBatteryIconAnimationFrame: ; CODE XREF: battleScreenDraw+5D8p ROM:000021FE ; drawSwitchScreen+DEp ... ROM:000021FE push.w r6 ROM:00002200 push.w r5 ROM:00002202 mov.b r0l, r5h ROM:00002204 mov.b r0h, r5l ROM:00002206 mov.b @common_bit_flags:16, r1l ROM:0000220A bld #1, r1l ROM:0000220C bcc loc_2246:8 ROM:0000220E mov.b @curUiFlags:16, r0l ; bits: ROM:0000220E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000220E ; 0x02 - slower animation frame ROM:00002212 extu.w r0 ROM:00002214 shar.w r0 ROM:00002216 shar.w r0 ROM:00002218 btst #0, r0l ROM:0000221A bne loc_2246:8 ROM:0000221C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00002220 mov.w #0x10, r0 ROM:00002224 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002228 mov.w r0, r6 ROM:0000222A mov.w r0, e0 ROM:0000222C mov.w #0x660, r0 ROM:00002230 mov.w #0x10, r1 ROM:00002234 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002238 mov.w r6, e0 ROM:0000223A mov.b r5l, r0h ROM:0000223C mov.b r5h, r0l ROM:0000223E mov.b #8, r1h ROM:00002240 mov.b r1h, r1l ROM:00002242 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00002246 ROM:00002246 loc_2246: ; CODE XREF: drawLowBatteryIconAnimationFrame+Ej ROM:00002246 ; drawLowBatteryIconAnimationFrame+1Cj ROM:00002246 pop.w r5 ROM:00002248 pop.w r6 ROM:0000224A rts ROM:0000224A ; End of function drawLowBatteryIconAnimationFrame ROM:0000224A ROM:0000224C ROM:0000224C ; =============== S U B R O U T I N E ======================================= ROM:0000224C ROM:0000224C ; (r0 = imageDataInRam, e0 = img1, r1l = imgWidth, r1h = imgHeight, e1 = img2) ROM:0000224C ROM:0000224C likelyImageOverlay: ; CODE XREF: battleScreenDraw+1C4p ROM:0000224C ROM:0000224C var_8 = -8 ROM:0000224C var_6 = -6 ROM:0000224C arg_1 = 0x17 ROM:0000224C arg_3 = 0x19 ROM:0000224C ROM:0000224C push.l er2 ROM:00002250 push.l er3 ROM:00002254 push.w r4 ROM:00002256 push.l er5 ROM:0000225A push.l er6 ROM:0000225E sub.w #0xA, r7 ROM:00002262 mov.w #0xFF, e6 ROM:00002266 mov.w r0, r4 ROM:00002268 mov.b r1l, r6l ROM:0000226A mov.b r1h, r3h ROM:0000226C mov.w e0, e5 ROM:0000226E mov.w e1, @(0xA+var_6:16,sp) ROM:00002272 mov.b @(0x1F:16,sp), r2l ROM:00002276 extu.w r2 ROM:00002278 mov.w r2, r5 ROM:0000227A mov.b r6l, r2l ROM:0000227C extu.w r2 ROM:0000227E mov.w r2, e1 ROM:00002280 mov.b @(0xA+arg_3:16,sp), r2l ROM:00002284 extu.w r2 ROM:00002286 add.w r5, r2 ROM:00002288 cmp.w e1, r2 ROM:0000228A ble loc_2296:8 ROM:0000228C mov.b r6l, r3l ROM:0000228E mov.b @(0x1F:16,sp), r2l ROM:00002292 sub.b r2l, r3l ROM:00002294 bra loc_229A:8 ROM:00002296 ; --------------------------------------------------------------------------- ROM:00002296 ROM:00002296 loc_2296: ; CODE XREF: likelyImageOverlay+3Ej ROM:00002296 mov.b @(0xA+arg_3:16,sp), r3l ROM:0000229A ROM:0000229A loc_229A: ; CODE XREF: likelyImageOverlay+48j ROM:0000229A mov.b @(0xA+arg_1:16,sp), r0l ROM:0000229E extu.w r0 ROM:000022A0 mov.w r0, e4 ROM:000022A2 shar.w r0 ROM:000022A4 shar.w r0 ROM:000022A6 shar.w r0 ROM:000022A8 extu.w r1 ROM:000022AA mulxu.w r1, er0 ROM:000022AC add.w r5, r0 ROM:000022AE shll.w r0 ROM:000022B0 add.w r0, r4 ROM:000022B2 sub.b r5l, r5l ROM:000022B4 mov.b @(0xA+arg_1:16,sp), r6l ROM:000022B8 and.b #7, r6l ROM:000022BA extu.w r6 ROM:000022BC add.w #8, e4 ROM:000022C0 mov.w e4, e2 ROM:000022C2 jmp loc_23A2:24 ROM:000022C6 ; --------------------------------------------------------------------------- ROM:000022C6 ROM:000022C6 loc_22C6: ; CODE XREF: likelyImageOverlay+158j ROM:000022C6 mov.b r5l, r0l ROM:000022C8 extu.w r0 ROM:000022CA mov.w r0, e4 ROM:000022CC shll.w r0 ROM:000022CE add.w r4, r0 ROM:000022D0 mov.w r0, @(0xA+var_8:16,sp) ROM:000022D4 mov.w @(0xA+var_6:16,sp), r1 ROM:000022D8 add.w e4, r1 ROM:000022DA mov.w r1, @sp ROM:000022DC mov.w #8, e3 ROM:000022E0 sub.w r6, e3 ROM:000022E2 mov.b @er1, r1l ROM:000022E4 mov.w e3, r2 ROM:000022E6 ROM:000022E6 loc_22E6: ; CODE XREF: likelyImageOverlay+A0j ROM:000022E6 dec.b r2l ROM:000022E8 bmi loc_22EE:8 ROM:000022EA shll.b r1l ROM:000022EC bra loc_22E6:8 ROM:000022EE ; --------------------------------------------------------------------------- ROM:000022EE ROM:000022EE loc_22EE: ; CODE XREF: likelyImageOverlay+9Cj ROM:000022EE mov.w e6, e0 ROM:000022F0 mov.b r6l, r1h ROM:000022F2 ROM:000022F2 loc_22F2: ; CODE XREF: likelyImageOverlay+ACj ROM:000022F2 dec.b r1h ROM:000022F4 bmi loc_22FA:8 ROM:000022F6 shar.w e0 ROM:000022F8 bra loc_22F2:8 ROM:000022FA ; --------------------------------------------------------------------------- ROM:000022FA ROM:000022FA loc_22FA: ; CODE XREF: likelyImageOverlay+A8j ROM:000022FA mov.w e0, r2 ROM:000022FC or.b r2l, r1l ROM:000022FE mov.b @er0, r1h ROM:00002300 and.b r1l, r1h ROM:00002302 mov.b r1h, @er0 ROM:00002304 mov.w @(0xA+var_8:16,sp), r0 ROM:00002308 mov.w @sp, r1 ROM:0000230A mov.b @er1, r1l ROM:0000230C mov.b r6l, r1h ROM:0000230E ROM:0000230E loc_230E: ; CODE XREF: likelyImageOverlay+C8j ROM:0000230E dec.b r1h ROM:00002310 bmi loc_2316:8 ROM:00002312 shll.b r1l ROM:00002314 bra loc_230E:8 ROM:00002316 ; --------------------------------------------------------------------------- ROM:00002316 ROM:00002316 loc_2316: ; CODE XREF: likelyImageOverlay+C4j ROM:00002316 mov.w e6, e0 ROM:00002318 ROM:00002318 loc_2318: ; CODE XREF: likelyImageOverlay+D2j ROM:00002318 dec.w #1, e3 ROM:0000231A bmi loc_2320:8 ROM:0000231C shar.w e0 ROM:0000231E bra loc_2318:8 ROM:00002320 ; --------------------------------------------------------------------------- ROM:00002320 ROM:00002320 loc_2320: ; CODE XREF: likelyImageOverlay+CEj ROM:00002320 mov.w e0, r2 ROM:00002322 or.b r2l, r1l ROM:00002324 mov.b @(1:16,er0), r1h ROM:00002328 and.b r1l, r1h ROM:0000232A mov.b r1h, @(1:16,er0) ROM:0000232E mov.b r3h, r0l ROM:00002330 extu.w r0 ROM:00002332 mov.w e2, e0 ROM:00002334 cmp.w r0, e0 ROM:00002336 bge loc_23A0:8 ROM:00002338 mov.b r5l, r0l ROM:0000233A extu.w r0 ROM:0000233C add.w e1, r0 ROM:0000233E shll.w r0 ROM:00002340 add.w r4, r0 ROM:00002342 mov.w r0, @(0xA+var_8:16,sp) ROM:00002346 mov.b r5l, r1l ROM:00002348 extu.w r1 ROM:0000234A mov.w @(0xA+var_6:16,sp), r2 ROM:0000234E add.w r1, r2 ROM:00002350 mov.w r2, e3 ROM:00002352 mov.w #8, e4 ROM:00002356 sub.w r6, e4 ROM:00002358 mov.b @er2, r2l ROM:0000235A mov.w e4, r1 ROM:0000235C ROM:0000235C loc_235C: ; CODE XREF: likelyImageOverlay+116j ROM:0000235C dec.b r1l ROM:0000235E bmi loc_2364:8 ROM:00002360 shlr.b r2l ROM:00002362 bra loc_235C:8 ROM:00002364 ; --------------------------------------------------------------------------- ROM:00002364 ROM:00002364 loc_2364: ; CODE XREF: likelyImageOverlay+112j ROM:00002364 mov.w e6, e0 ROM:00002366 mov.b r6l, r1l ROM:00002368 ROM:00002368 loc_2368: ; CODE XREF: likelyImageOverlay+122j ROM:00002368 dec.b r1l ROM:0000236A bmi loc_2370:8 ROM:0000236C shll.w e0 ROM:0000236E bra loc_2368:8 ROM:00002370 ; --------------------------------------------------------------------------- ROM:00002370 ROM:00002370 loc_2370: ; CODE XREF: likelyImageOverlay+11Ej ROM:00002370 mov.w e0, r1 ROM:00002372 or.b r1l, r2l ROM:00002374 mov.b @er0, r1l ROM:00002376 and.b r2l, r1l ROM:00002378 mov.b r1l, @er0 ROM:0000237A mov.w e3, r1 ROM:0000237C mov.b @er1, r1l ROM:0000237E ROM:0000237E loc_237E: ; CODE XREF: likelyImageOverlay+138j ROM:0000237E dec.w #1, e4 ROM:00002380 bmi loc_2386:8 ROM:00002382 shlr.b r1l ROM:00002384 bra loc_237E:8 ROM:00002386 ; --------------------------------------------------------------------------- ROM:00002386 ROM:00002386 loc_2386: ; CODE XREF: likelyImageOverlay+134j ROM:00002386 mov.w e6, e0 ROM:00002388 mov.b r6l, r1h ROM:0000238A ROM:0000238A loc_238A: ; CODE XREF: likelyImageOverlay+144j ROM:0000238A dec.b r1h ROM:0000238C bmi loc_2392:8 ROM:0000238E shll.w e0 ROM:00002390 bra loc_238A:8 ROM:00002392 ; --------------------------------------------------------------------------- ROM:00002392 ROM:00002392 loc_2392: ; CODE XREF: likelyImageOverlay+140j ROM:00002392 mov.w e0, r2 ROM:00002394 or.b r2l, r1l ROM:00002396 mov.b @(1:16,er0), r1h ROM:0000239A and.b r1l, r1h ROM:0000239C mov.b r1h, @(1:16,er0) ROM:000023A0 ROM:000023A0 loc_23A0: ; CODE XREF: likelyImageOverlay+EAj ROM:000023A0 inc.b r5l ROM:000023A2 ROM:000023A2 loc_23A2: ; CODE XREF: likelyImageOverlay+76j ROM:000023A2 cmp.b r3l, r5l ROM:000023A4 bcs loc_22C6:16 ROM:000023A8 sub.b r5l, r5l ROM:000023AA mov.w #8, e3 ROM:000023AE sub.w r6, e3 ROM:000023B0 jmp loc_2450:24 ROM:000023B4 ; --------------------------------------------------------------------------- ROM:000023B4 ROM:000023B4 loc_23B4: ; CODE XREF: likelyImageOverlay+206j ROM:000023B4 mov.b r5l, r0l ROM:000023B6 extu.w r0 ROM:000023B8 shll.w r0 ROM:000023BA mov.w r0, e4 ROM:000023BC add.w r4, r0 ROM:000023BE mov.w r0, @(0xA+var_6:16,sp) ROM:000023C2 mov.w e5, r1 ROM:000023C4 add.w e4, r1 ROM:000023C6 mov.w r1, @(0xA+var_8:16,sp) ROM:000023CA mov.b @er1, r1l ROM:000023CC mov.b r6l, r1h ROM:000023CE ROM:000023CE loc_23CE: ; CODE XREF: likelyImageOverlay+188j ROM:000023CE dec.b r1h ROM:000023D0 bmi loc_23D6:8 ROM:000023D2 shll.b r1l ROM:000023D4 bra loc_23CE:8 ROM:000023D6 ; --------------------------------------------------------------------------- ROM:000023D6 ROM:000023D6 loc_23D6: ; CODE XREF: likelyImageOverlay+184j ROM:000023D6 mov.b @er0, r1h ROM:000023D8 or.b r1l, r1h ROM:000023DA mov.b r1h, @er0 ROM:000023DC mov.w @(0xA+var_6:16,sp), r0 ROM:000023E0 mov.w @(0xA+var_8:16,sp), r1 ROM:000023E4 mov.b @(1:16,er1), r1l ROM:000023E8 mov.b r6l, r1h ROM:000023EA ROM:000023EA loc_23EA: ; CODE XREF: likelyImageOverlay+1A4j ROM:000023EA dec.b r1h ROM:000023EC bmi loc_23F2:8 ROM:000023EE shll.b r1l ROM:000023F0 bra loc_23EA:8 ROM:000023F2 ; --------------------------------------------------------------------------- ROM:000023F2 ROM:000023F2 loc_23F2: ; CODE XREF: likelyImageOverlay+1A0j ROM:000023F2 mov.b @(1:16,er0), r1h ROM:000023F6 or.b r1l, r1h ROM:000023F8 mov.b r1h, @(1:16,er0) ROM:000023FC mov.b r3h, r0l ROM:000023FE extu.w r0 ROM:00002400 mov.w e2, e0 ROM:00002402 cmp.w r0, e0 ROM:00002404 bge loc_244E:8 ROM:00002406 mov.b r5l, r0l ROM:00002408 extu.w r0 ROM:0000240A add.w e1, r0 ROM:0000240C shll.w r0 ROM:0000240E add.w r4, r0 ROM:00002410 mov.w r0, @(0xA+var_6:16,sp) ROM:00002414 mov.w e5, r1 ROM:00002416 add.w e4, r1 ROM:00002418 mov.w r1, @(0xA+var_8:16,sp) ROM:0000241C mov.b @er1, r1l ROM:0000241E mov.w e3, r2 ROM:00002420 ROM:00002420 loc_2420: ; CODE XREF: likelyImageOverlay+1DAj ROM:00002420 dec.b r2l ROM:00002422 bmi loc_2428:8 ROM:00002424 shlr.b r1l ROM:00002426 bra loc_2420:8 ROM:00002428 ; --------------------------------------------------------------------------- ROM:00002428 ROM:00002428 loc_2428: ; CODE XREF: likelyImageOverlay+1D6j ROM:00002428 mov.b @er0, r1h ROM:0000242A or.b r1l, r1h ROM:0000242C mov.b r1h, @er0 ROM:0000242E mov.w @(0xA+var_6:16,sp), r0 ROM:00002432 mov.w @(0xA+var_8:16,sp), r1 ROM:00002436 mov.b @(1:16,er1), r1l ROM:0000243A mov.w e3, r2 ROM:0000243C ROM:0000243C loc_243C: ; CODE XREF: likelyImageOverlay+1F6j ROM:0000243C dec.b r2l ROM:0000243E bmi loc_2444:8 ROM:00002440 shlr.b r1l ROM:00002442 bra loc_243C:8 ROM:00002444 ; --------------------------------------------------------------------------- ROM:00002444 ROM:00002444 loc_2444: ; CODE XREF: likelyImageOverlay+1F2j ROM:00002444 mov.b @(1:16,er0), r1h ROM:00002448 or.b r1l, r1h ROM:0000244A mov.b r1h, @(1:16,er0) ROM:0000244E ROM:0000244E loc_244E: ; CODE XREF: likelyImageOverlay+1B8j ROM:0000244E inc.b r5l ROM:00002450 ROM:00002450 loc_2450: ; CODE XREF: likelyImageOverlay+164j ROM:00002450 cmp.b r3l, r5l ROM:00002452 bcs loc_23B4:16 ROM:00002456 add.w #0xA, r7 ROM:0000245A jmp common_epilogue_5:24 ROM:0000245A ; End of function likelyImageOverlay ROM:0000245A ROM:0000245E ROM:0000245E ; =============== S U B R O U T I N E ======================================= ROM:0000245E ROM:0000245E ROM:0000245E wdt_maybe_off: ; CODE XREF: ENTRY+76p ROM:0000245E mov.b #0x9E, r0l ; 'P' ROM:00002460 mov.b r0l, @WDT_TCSRWD1:8 ROM:00002462 mov.b #0xA2, r0l ; 'ó' ROM:00002464 mov.b r0l, @WDT_TCSRWD1:8 ROM:00002466 mov.b #0x8E, r0l ; 'Ä' ROM:00002468 mov.b r0l, @WDT_TCSRWD1:8 ROM:0000246A rts ROM:0000246A ; End of function wdt_maybe_off ROM:0000246A ROM:0000246C ROM:0000246C ; =============== S U B R O U T I N E ======================================= ROM:0000246C ROM:0000246C ROM:0000246C wdt_maybe_on: ; CODE XREF: ENTRY+7Ep ROM:0000246C mov.b #0x9E, r0l ; 'P' ROM:0000246E mov.b r0l, @WDT_TCSRWD1:8 ROM:00002470 mov.b #0xA6, r0l ; 'ª' ROM:00002472 mov.b r0l, @WDT_TCSRWD1:8 ROM:00002474 mov.b #0x8E, r0l ; 'Ä' ROM:00002476 mov.b r0l, @WDT_TCSRWD1:8 ROM:00002478 mov.b #0xF5, r0l ; ')' ROM:0000247A mov.b r0l, @WDT_TMWD:8 ROM:0000247C rts ROM:0000247C ; End of function wdt_maybe_on ROM:0000247C ROM:0000247E ROM:0000247E ; =============== S U B R O U T I N E ======================================= ROM:0000247E ROM:0000247E ; uses space in normal ir rx buffer (0xf8f0) ROM:0000247E ROM:0000247E setHeapPointer: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+4p ROM:0000247E ; startWalkEepromActions+14Ap ... ROM:0000247E mov.w #HEAP_START, r0 ROM:00002482 mov.w r0, @CUR_HEAP_PTR:16 ROM:00002486 rts ROM:00002486 ; End of function setHeapPointer ROM:00002486 ROM:00002488 ROM:00002488 ; =============== S U B R O U T I N E ======================================= ROM:00002488 ROM:00002488 ; (r0 = size) -> r0 = ptr ROM:00002488 ROM:00002488 static_malloc: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+Ap ROM:00002488 ; startWalkEepromActions+152p ... ROM:00002488 push.w e5 ROM:0000248A mov.w #CUR_HEAP_PTR, r1 ROM:0000248E mov.w @er1, e0 ; e0 = *(u16*)dbgBuf ROM:00002490 mov.w e0, e1 ROM:00002492 add.w r0, e0 ; e0 += param ROM:00002494 mov.w e0, @er1 ; *(dbgBufPtr) = val ROM:00002496 mov.w #HEAP_START, r0 ROM:0000249A mov.w e0, r1 ROM:0000249C sub.w r0, r1 ROM:0000249E cmp.w #0x400, r1 ROM:000024A2 bls loc_24A6:8 ROM:000024A4 sleep ROM:000024A6 ROM:000024A6 loc_24A6: ; CODE XREF: static_malloc+1Aj ROM:000024A6 mov.w e1, r0 ROM:000024A8 pop.w e5 ROM:000024AA rts ROM:000024AA ; End of function static_malloc ROM:000024AA ROM:000024AC ROM:000024AC ; =============== S U B R O U T I N E ======================================= ROM:000024AC ROM:000024AC ROM:000024AC accountForStepTakenLikely: ; CODE XREF: sleepModeEventLoop:loc_796Ep ROM:000024AC mov.b @step_detection_related_A:16, r1l ROM:000024B0 mov.b @step_detection_related_B:16, r0l ROM:000024B4 cmp.b r1l, r0l ROM:000024B6 beq locret_256C:16 ROM:000024BA mov.b @step_detection_related_C:16, r0l ROM:000024BE add.b r1l, r0l ROM:000024C0 mov.b r0l, @step_detection_related_C:16 ROM:000024C4 cmp.b #0x40, r0l ; '@' ROM:000024C6 bls locret_256C:16 ROM:000024CA mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:000024CE inc.w #1, r0 ROM:000024D0 mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:000024D4 mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:000024D8 cmp.w #9999, r0 ROM:000024DC bls loc_24E6:8 ROM:000024DE mov.w #9999, r0 ROM:000024E2 mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:000024E6 ROM:000024E6 loc_24E6: ; CODE XREF: accountForStepTakenLikely+30j ROM:000024E6 mov.l @stepCountTodaySoFar:16, er0 ROM:000024EC inc.l #1, er0 ROM:000024EE mov.l er0, @stepCountTodaySoFar:16 ROM:000024F4 mov.l @stepCountTodaySoFar:16, er0 ROM:000024FA cmp.l #99999, er0 ROM:00002500 bls loc_250E:8 ROM:00002502 mov.l #99999, er0 ROM:00002508 mov.l er0, @stepCountTodaySoFar:16 ROM:0000250E ROM:0000250E loc_250E: ; CODE XREF: accountForStepTakenLikely+54j ROM:0000250E mov.l @RamCache_totalSteps:16, er0 ROM:00002514 inc.l #1, er0 ROM:00002516 jsr clampTotalStepToLimit:24 ROM:0000251A mov.b @stepToWattDividerState:16, r0l ; counts to 20, when reached, watt increments, this resets ROM:0000251E inc.b r0l ROM:00002520 mov.b r0l, @stepToWattDividerState:16 ; counts to 20, when reached, watt increments, this resets ROM:00002524 mov.b @stepToWattDividerState:16, r0l ; counts to 20, when reached, watt increments, this resets ROM:00002528 cmp.b #20, r0l ROM:0000252A bcs loc_254A:8 ROM:0000252C mov.b @stepToWattDividerState:16, r0l ; counts to 20, when reached, watt increments, this resets ROM:00002530 add.b #-20, r0l ROM:00002532 mov.b r0l, @stepToWattDividerState:16 ; counts to 20, when reached, watt increments, this resets ROM:00002536 mov.w @RamCache_curWatts:16, r0 ROM:0000253A inc.w #1, r0 ROM:0000253C cmp.w #9999, r0 ROM:00002540 bls loc_2546:8 ROM:00002542 mov.w #9999, r0 ROM:00002546 ROM:00002546 loc_2546: ; CODE XREF: accountForStepTakenLikely+94j ROM:00002546 mov.w r0, @RamCache_curWatts:16 ROM:0000254A ROM:0000254A loc_254A: ; CODE XREF: accountForStepTakenLikely+7Ej ROM:0000254A mov.b @step_detection_related_B:16, r0l ROM:0000254E inc.b r0l ROM:00002550 mov.b r0l, @step_detection_related_B:16 ROM:00002554 mov.b @step_detection_related_A:16, r0h ROM:00002558 cmp.b r0h, r0l ROM:0000255A bls loc_2562:8 ROM:0000255C mov.b r0h, r0l ROM:0000255E mov.b r0l, @step_detection_related_B:16 ROM:00002562 ROM:00002562 loc_2562: ; CODE XREF: accountForStepTakenLikely+AEj ROM:00002562 mov.b @step_detection_related_C:16, r0l ROM:00002566 add.b #-0x40, r0l ROM:00002568 mov.b r0l, @step_detection_related_C:16 ROM:0000256C ROM:0000256C locret_256C: ; CODE XREF: accountForStepTakenLikely+Aj ROM:0000256C ; accountForStepTakenLikely+1Aj ROM:0000256C rts ROM:0000256C ; End of function accountForStepTakenLikely ROM:0000256C ROM:0000256E ROM:0000256E ; =============== S U B R O U T I N E ======================================= ROM:0000256E ROM:0000256E ROM:0000256E deviceSleep: ; CODE XREF: factoryTestPerformIfNeeded+26Cp ROM:0000256E ; sleepModeEventLoop+8p ROM:0000256E mov.w r0, r0 ROM:00002570 bne loc_2586:8 ROM:00002572 mov.b #0xA7, r1l ; 'º' ROM:00002574 mov.b r1l, @SYSCR1:8 ROM:00002576 mov.b #0xE0, r1l ; 'a' ROM:00002578 mov.b r1l, @SYSCR2:8 ROM:0000257A mov.w #common_bit_flags, r1 ROM:0000257E bset #4, @er1 ROM:00002582 sleep ROM:00002584 bra locret_259C:8 ROM:00002586 ; --------------------------------------------------------------------------- ROM:00002586 ROM:00002586 loc_2586: ; CODE XREF: deviceSleep+2j ROM:00002586 dec.w #1, r0 ROM:00002588 bne locret_259C:8 ROM:0000258A mov.b #0xAF, r0l ; '»' ROM:0000258C mov.b r0l, @SYSCR1:8 ROM:0000258E mov.b #0xE3, r0l ; 'p' ROM:00002590 mov.b r0l, @SYSCR2:8 ROM:00002592 mov.w #common_bit_flags, r0 ROM:00002596 bclr #4, @er0 ROM:0000259A sleep ROM:0000259C ROM:0000259C locret_259C: ; CODE XREF: deviceSleep+16j ROM:0000259C ; deviceSleep+1Aj ROM:0000259C rts ROM:0000259C ; End of function deviceSleep ROM:0000259C ROM:0000259E ROM:0000259E ; =============== S U B R O U T I N E ======================================= ROM:0000259E ROM:0000259E ROM:0000259E wdt_maybe_pet: ; CODE XREF: ENTRY:loc_348p ROM:0000259E ; irCommsEventLoop+10p ... ROM:0000259E mov.b #0x5E, r0l ; '^' ROM:000025A0 mov.b r0l, @WDT_TCSRWD1:8 ROM:000025A2 sub.b r0l, r0l ROM:000025A4 mov.b r0l, @WDT_TCWD:8 ROM:000025A6 mov.b #0x9E, r0l ; 'P' ROM:000025A8 mov.b r0l, @WDT_TCSRWD1:8 ROM:000025AA rts ROM:000025AA ; End of function wdt_maybe_pet ROM:000025AA ROM:000025AC ROM:000025AC ; =============== S U B R O U T I N E ======================================= ROM:000025AC ROM:000025AC ROM:000025AC check_some_rtc_set_bit_and_maybe_wait: ; CODE XREF: adcSample+Ap ROM:000025AC ; factoryTestPerformIfNeeded+58p ... ROM:000025AC mov.b @common_bit_flags:16, r0l ROM:000025B0 bld #4, r0l ROM:000025B2 bcc locret_25C6:8 ROM:000025B4 mov.w #0x25, r0 ; '%' ROM:000025B8 ROM:000025B8 loc_25B8: ; CODE XREF: check_some_rtc_set_bit_and_maybe_wait+18j ROM:000025B8 nop ROM:000025BA nop ROM:000025BC nop ROM:000025BE nop ROM:000025C0 nop ROM:000025C2 dec.w #1, r0 ROM:000025C4 bne loc_25B8:8 ROM:000025C6 ROM:000025C6 locret_25C6: ; CODE XREF: check_some_rtc_set_bit_and_maybe_wait+6j ROM:000025C6 rts ROM:000025C6 ; End of function check_some_rtc_set_bit_and_maybe_wait ROM:000025C6 ROM:000025C8 ROM:000025C8 ; =============== S U B R O U T I N E ======================================= ROM:000025C8 ROM:000025C8 ; (er0 = seed) ROM:000025C8 ROM:000025C8 setRandomSeed: ; CODE XREF: ENTRY+C0p ROM:000025C8 mov.l er0, @RandomSeed:16 ROM:000025CE rts ROM:000025CE ; End of function setRandomSeed ROM:000025CE ROM:000025D0 ROM:000025D0 ; =============== S U B R O U T I N E ======================================= ROM:000025D0 ROM:000025D0 ROM:000025D0 rand: ; CODE XREF: irCommsEventLoop:loc_980p ROM:000025D0 ; irCommsEventLoop:loc_C88p ... ROM:000025D0 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000025D4 mov.w #RandomSeed, r6 ROM:000025D8 mov.l @er6, er5 ROM:000025DC mov.l er5, er0 ROM:000025DE mov.l #0x19660D, er1 ROM:000025E4 jsr mul32:24 ; er0 = er0 * er1 ROM:000025E8 add.l #0x3C6EF35F, er0 ROM:000025EE mov.l er0, @er6 ROM:000025F2 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000025F2 ; End of function rand ROM:000025F2 ROM:000025F6 ROM:000025F6 ; =============== S U B R O U T I N E ======================================= ROM:000025F6 ROM:000025F6 ; (u8* out = e0, u8 * in = r0) ROM:000025F6 ROM:000025F6 decompress: ; CODE XREF: irCommsEventLoop+9B0p ROM:000025F6 bytes_left_to_produce = r1h ROM:000025F6 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000025FA mov.w r0, r5 ROM:000025FC mov.w e0, r6 ROM:000025FE mov.b @(1:16,er5), bytes_left_to_produce ; decompressedLength ROM:00002602 add.w #4, r5 ; skip to compressed data ROM:00002606 bra loop_check:8 ROM:00002608 ; --------------------------------------------------------------------------- ROM:00002608 ROM:00002608 next_piece: ; CODE XREF: decompress+64j ROM:00002608 mov.w r5, r0 ROM:0000260A inc.w #1, r5 ROM:0000260C mov.b @er0, r3l ROM:0000260E mov.b #8, r3h ROM:00002610 bra loc_2652:8 ROM:00002612 ; --------------------------------------------------------------------------- ROM:00002612 ROM:00002612 loc_2612: ; CODE XREF: decompress+60j ROM:00002612 btst #7, r3l ROM:00002614 bne bit_was_high_decode_run:8 ROM:00002616 ROM:00002616 bit_was_low_copy_byte: ROM:00002616 mov.w r5, r0 ROM:00002618 inc.w #1, r5 ROM:0000261A mov.b @er0, r0l ROM:0000261C mov.b r0l, @er6 ROM:0000261E inc.w #1, r6 ROM:00002620 dec.b bytes_left_to_produce ROM:00002622 bra piece_decoded:8 ROM:00002624 ; --------------------------------------------------------------------------- ROM:00002624 ROM:00002624 bit_was_high_decode_run: ; CODE XREF: decompress+1Ej ROM:00002624 mov.b @er5, r0l ; before this, sp is at -0x26 from top ROM:00002626 mov.b #0x10, r1l ROM:00002628 sub.b r0h, r0h ROM:0000262A divxu.b r1l, r0 ; top nibble - run length ROM:0000262C mov.b r0l, r4l ROM:0000262E add.b #3, r4l ; run length calculated ROM:00002630 inc.w #1, r5 ROM:00002632 mov.b @er5+, r0l ; second byte - backwards reference length ROM:00002634 extu.w r0 ROM:00002636 inc.w #1, r0 ; backwards look ROM:00002638 sub.b r4l, bytes_left_to_produce ROM:0000263A neg.w r0 ROM:0000263C mov.w r0, e0 ROM:0000263E ROM:0000263E loop_copy: ; CODE XREF: decompress+54j ROM:0000263E mov.w r6, r0 ; XXX: overflowable ROM:00002640 add.w e0, r0 ROM:00002642 mov.b @er0, r0l ROM:00002644 mov.b r0l, @er6 ROM:00002646 inc.w #1, r6 ROM:00002648 dec.b r4l ROM:0000264A bne loop_copy:8 ROM:0000264C ROM:0000264C piece_decoded: ; CODE XREF: decompress+2Cj ROM:0000264C mov.b bytes_left_to_produce, bytes_left_to_produce ROM:0000264E beq loop_check:8 ROM:00002650 shll.b r3l ROM:00002652 ROM:00002652 loc_2652: ; CODE XREF: decompress+1Aj ROM:00002652 dec.b r3h ROM:00002654 mov.b r3h, r3h ROM:00002656 bge loc_2612:8 ROM:00002658 ROM:00002658 loop_check: ; CODE XREF: decompress+10j ROM:00002658 ; decompress+58j ROM:00002658 mov.b bytes_left_to_produce, bytes_left_to_produce ROM:0000265A bne next_piece:8 ROM:0000265C jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000265C ; End of function decompress ROM:0000265C ROM:00002660 ; --------------------------------------------------------------------------- ROM:00002660 ; START OF FUNCTION CHUNK FOR imageFlipHorizontal ROM:00002660 ROM:00002660 enother_common_epilogue: ; CODE XREF: imageFlipHorizontal+82j ROM:00002660 ; some_sort_of_eeprom_init+130j ROM:00002660 pop.w r6 ROM:00002662 pop.l er5 ROM:00002666 pop.w r4 ROM:00002668 pop.w r3 ROM:0000266A rts ROM:0000266A ; END OF FUNCTION CHUNK FOR imageFlipHorizontal ROM:0000266C ; --------------------------------------------------------------------------- ROM:0000266C ; START OF FUNCTION CHUNK FOR goToPeerPlayMicroApp ROM:0000266C ROM:0000266C common_epilogue_5: ; CODE XREF: likelyImageOverlay+20Ej ROM:0000266C ; goToPeerPlayMicroApp+50j ROM:0000266C pop.l er6 ROM:00002670 pop.l er5 ROM:00002674 pop.w r4 ROM:00002676 pop.l er3 ROM:0000267A pop.l er2 ROM:0000267E rts ROM:0000267E ; END OF FUNCTION CHUNK FOR goToPeerPlayMicroApp ROM:00002680 ROM:00002680 ; =============== S U B R O U T I N E ======================================= ROM:00002680 ROM:00002680 ; used in number rendernig to add overline ROM:00002680 ROM:00002680 orr_0x0101_into_three_words: ; CODE XREF: drawNumberOnscreen:loc_2022p ROM:00002680 ; drawNumberOnscreen+38p ROM:00002680 mov.w @er6, r0 ROM:00002682 or.w #0x101, r0 ROM:00002686 mov.w r0, @er6 ROM:00002688 inc.w #2, r6 ROM:0000268A mov.w @er6, r0 ROM:0000268C or.w #0x101, r0 ROM:00002690 mov.w r0, @er6 ROM:00002692 inc.w #2, r6 ROM:00002694 mov.w @er6, r0 ROM:00002696 or.w #0x101, r0 ROM:0000269A mov.w r0, @er6 ROM:0000269C inc.w #2, r6 ROM:0000269E rts ROM:0000269E ; End of function orr_0x0101_into_three_words ROM:0000269E ROM:000026A0 ROM:000026A0 ; =============== S U B R O U T I N E ======================================= ROM:000026A0 ROM:000026A0 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:000026A0 ROM:000026A0 accelRegRead: ; CODE XREF: accelInit+1Ep ROM:000026A0 ; accelInit+38p ... ROM:000026A0 mov.b r0l, r1h ROM:000026A2 mov.w e0, r4 ROM:000026A4 mov.b @SSU_SSSR:16, r1l ROM:000026A8 and.b #4, r1l ROM:000026AA mov.b r1l, @SSU_SSSR:16 ROM:000026AE mov.b #0xC0, r1l ; '+' ; TX and RX on ROM:000026B0 mov.b r1l, @SSU_SSER:16 ROM:000026B4 bset #7, r1h ; r1h |= 0x80 ROM:000026B6 bclr #0, @IO_PDR9:8 ; port 9 bit 0 low (screen chip select on ROM:000026BA ROM:000026BA wait_tx_space_available: ; CODE XREF: accelRegRead+20j ROM:000026BA mov.b @SSU_SSSR:16, r0l ROM:000026BE bld #2, r0l ROM:000026C0 bcc wait_tx_space_available:8 ROM:000026C2 mov.b r1h, @SSU_SSTDR:16 ; sent r1h ROM:000026C6 ROM:000026C6 wait_rx_data_avail: ; CODE XREF: accelRegRead+2Cj ROM:000026C6 mov.b @SSU_SSSR:16, r0l ROM:000026CA bld #1, r0l ROM:000026CC bcc wait_rx_data_avail:8 ROM:000026CE mov.b @SSU_SSRDR:16, r0l ; read the byte into r0l ROM:000026D2 ROM:000026D2 wait_tx_space_avail: ; CODE XREF: accelRegRead+38j ROM:000026D2 ; accelRegRead+52j ROM:000026D2 mov.b @SSU_SSSR:16, r0l ROM:000026D6 bld #2, r0l ROM:000026D8 bcc wait_tx_space_avail:8 ROM:000026DA mov.b #0xFF, r0l ROM:000026DC mov.b r0l, @SSU_SSTDR:16 ; send 0xff ROM:000026E0 ROM:000026E0 wait_rx_data_avail_2: ; CODE XREF: accelRegRead+46j ROM:000026E0 mov.b @SSU_SSSR:16, r0l ROM:000026E4 bld #1, r0l ROM:000026E6 bcc wait_rx_data_avail_2:8 ROM:000026E8 mov.b @SSU_SSRDR:16, r1h ROM:000026EC mov.b r1h, @er4 ; read data ROM:000026EE inc.w #1, r4 ; inv pointer ROM:000026F0 dec.b r0h ROM:000026F2 bne wait_tx_space_avail:8 ROM:000026F4 ROM:000026F4 loc_26F4: ; CODE XREF: accelRegRead+5Aj ROM:000026F4 mov.b @SSU_SSSR:16, r0l ROM:000026F8 bld #3, r0l ROM:000026FA bcc loc_26F4:8 ROM:000026FC bset #0, @IO_PDR9:8 ROM:00002700 mov.b #0x80, r0l ; 'Ç' ROM:00002702 mov.b r0l, @SSU_SSER:16 ROM:00002706 sub.b r0l, r0l ROM:00002708 rts ROM:00002708 ; End of function accelRegRead ROM:00002708 ROM:0000270A ROM:0000270A ; =============== S U B R O U T I N E ======================================= ROM:0000270A ROM:0000270A ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:0000270A ROM:0000270A accelRegWrite: ; CODE XREF: accelInit+14p ROM:0000270A ; accelInit+48p ... ROM:0000270A mov.b r0l, r1h ROM:0000270C mov.b #0x80, r1l ; 'Ç' ; TX on ROM:0000270E mov.b r1l, @SSU_SSER:16 ROM:00002712 bclr #0, @IO_PDR9:8 ; port 9 pin 0 is low (likely chip select) ROM:00002716 ROM:00002716 wait_can_tx: ; CODE XREF: accelRegWrite+12j ROM:00002716 mov.b @SSU_SSSR:16, r0l ROM:0000271A bld #2, r0l ROM:0000271C bcc wait_can_tx:8 ROM:0000271E mov.b r1h, @SSU_SSTDR:16 ; send r1h ROM:00002722 ROM:00002722 wait_can_tx_2: ; CODE XREF: accelRegWrite+1Ej ROM:00002722 mov.b @SSU_SSSR:16, r0l ROM:00002726 bld #2, r0l ROM:00002728 bcc wait_can_tx_2:8 ROM:0000272A mov.b r0h, @SSU_SSTDR:16 ; send r0l ROM:0000272E ROM:0000272E wait_tx_over: ; CODE XREF: accelRegWrite+2Aj ROM:0000272E mov.b @SSU_SSSR:16, r0l ROM:00002732 bld #3, r0l ROM:00002734 bcc wait_tx_over:8 ROM:00002736 bset #0, @IO_PDR9:8 ; port 9 pin 0 is high (likely chip select) ROM:0000273A rts ROM:0000273A ; End of function accelRegWrite ROM:0000273A ROM:0000273C ROM:0000273C ; =============== S U B R O U T I N E ======================================= ROM:0000273C ROM:0000273C ; bool () -> result in r0l ROM:0000273C ROM:0000273C accelInit: ; CODE XREF: ENTRY+Ep ROM:0000273C ; ENTRY+CCp ... ROM:0000273C push.w r4 ROM:0000273E push.w r6 ROM:00002740 subs #2, sp ROM:00002742 mov.b @SSU_SSSR:16, r0l ROM:00002746 and.b #4, r0l ROM:00002748 mov.b r0l, @SSU_SSSR:16 ROM:0000274C mov.w #0x8015, r0 ; spi4 mode ROM:00002750 bsr accelRegWrite:8 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:00002752 mov.w r7, r6 ; some space on stack ROM:00002754 mov.b #2, r0h ; read 2 bytes - chip id and version ROM:00002756 mov.w r6, e0 ; dst buf ROM:00002758 sub.b r0l, r0l ; read reg 0 ROM:0000275A jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:0000275E mov.b @er6, r0l ; first byte read ROM:00002760 and.b #7, r0l ROM:00002762 cmp.b #2, r0l ; we expect 2 here ROM:00002764 beq chip_id_matches:8 ROM:00002766 bset #0, @IO_PDR9:8 ROM:0000276A sub.b r0l, r0l ROM:0000276C bra loc_27BA:8 ROM:0000276E ; --------------------------------------------------------------------------- ROM:0000276E ROM:0000276E chip_id_matches: ; CODE XREF: accelInit+28j ROM:0000276E mov.b #1, r0h ; one byte ROM:00002770 mov.w r6, e0 ROM:00002772 mov.b #0x14, r0l ; read reg 0x14 ROM:00002774 jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:00002778 mov.b @er6, r0l ROM:0000277A and.b #0xE0, r0l ROM:0000277C or.b #6, r0l ; set range and badwidth ROM:0000277E mov.b r0l, @er6 ROM:00002780 mov.b r0l, r0h ROM:00002782 mov.b #0x14, r0l ROM:00002784 bsr accelRegWrite:8 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:00002786 mov.w #0xB, r0 ; reg 0x0b = 0 ROM:0000278A bsr accelRegWrite:16 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:0000278E mov.w #0x100A, r0 ; reg 0x0a = 0x10 . eeprom write enable ROM:00002792 jsr accelRegWrite:24 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:00002796 mov.b #1, r0h ROM:00002798 mov.w r6, e0 ROM:0000279A mov.b #0x1E, r0l ROM:0000279C jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:000027A0 bset #7, @er6 ROM:000027A4 mov.b @er6, r0h ; orr 0x80 into reg 0x1e, which is a reserved reg ROM:000027A6 mov.b #0x1E, r0l ROM:000027A8 jsr accelRegWrite:24 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:000027AC mov.w #0xA, r0 ; reg 0x0A = 0 - eeprom disable ROM:000027B0 jsr accelRegWrite:24 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:000027B4 bset #0, @IO_PDR9:8 ROM:000027B8 mov.b #1, r0l ROM:000027BA ROM:000027BA loc_27BA: ; CODE XREF: accelInit+30j ROM:000027BA adds #2, sp ROM:000027BC pop.w r6 ROM:000027BE pop.w r4 ROM:000027C0 rts ROM:000027C0 ; End of function accelInit ROM:000027C0 ROM:000027C2 ROM:000027C2 ; =============== S U B R O U T I N E ======================================= ROM:000027C2 ROM:000027C2 ; (u16 val) -> u16 ROM:000027C2 ; ROM:000027C2 ; add values are actually only 12 bits (lower 12) ROM:000027C2 ; this adds a checksum to this adc value for safer EEPROM storage ROM:000027C2 ; 0x0XYZ -> 0xTXYZ, where T = (X + Y + Z) & 0x0f ROM:000027C2 ROM:000027C2 checksumProtectAdcValue: ; CODE XREF: adcFactoryTestAndCalibrate+50p ROM:000027C2 and.w #0xFFF, r0 ; r0 = r0 & 0xfff ROM:000027C6 mov.w r0, r5 ROM:000027C8 shlr.w r5 ROM:000027CA shlr.w r5 ROM:000027CC shlr.w r5 ROM:000027CE shlr.w r5 ; r5 = (r0 >> 4) & 0xff ROM:000027D0 and.b #0xF, r5l ; r5l = (r0 >> 4) & 0x0f ROM:000027D2 mov.b r0h, r1l ROM:000027D4 and.b #0xF, r1l ; r1l = (r0 >> 8) & 0x0f ROM:000027D6 add.b r1l, r5l ; r5l += r1l ROM:000027D8 mov.b r0l, r1l ROM:000027DA and.b #0xF, r1l ; r1l = (r0 & 0x0f) ROM:000027DC add.b r1l, r5l ; r5 += r1l ROM:000027DE mov.b r5l, r1h ROM:000027E0 sub.b r1l, r1l ; r1 = r5 << 8 ROM:000027E2 mov.w #0x10, e1 ROM:000027E6 mulxu.w e1, er1 ; er1 = r1 << 4 ROM:000027E8 or.w r1, r0 ROM:000027EA rts ROM:000027EA ; End of function checksumProtectAdcValue ROM:000027EA ROM:000027EC ROM:000027EC ; =============== S U B R O U T I N E ======================================= ROM:000027EC ROM:000027EC ; (r0 = word) -> r0l bool success ROM:000027EC ROM:000027EC adcClibrationDataVerifySelfChecksum: ; CODE XREF: checkBatteryForBelowGivenLevel+20p ROM:000027EC ; interactionHandlerDebugMode22+116p ROM:000027EC mov.w r0, r3 ROM:000027EE mov.w r3, r5 ROM:000027F0 shlr.w r5 ROM:000027F2 shlr.w r5 ROM:000027F4 shlr.w r5 ROM:000027F6 shlr.w r5 ROM:000027F8 and.b #0xF, r5l ROM:000027FA mov.b r3h, r1l ROM:000027FC and.b #0xF, r1l ROM:000027FE add.b r1l, r5l ROM:00002800 mov.b r3l, r1l ROM:00002802 and.b #0xF, r1l ROM:00002804 add.b r1l, r5l ROM:00002806 and.b #0xF, r5l ROM:00002808 mov.w #0x1000, e0 ROM:0000280C extu.l er3 ROM:0000280E divxu.w e0, er3 ROM:00002810 extu.w r5 ROM:00002812 cmp.w r3, r5 ROM:00002814 beq loc_281A:8 ROM:00002816 sub.b r0l, r0l ROM:00002818 bra locret_281C:8 ROM:0000281A ; --------------------------------------------------------------------------- ROM:0000281A ROM:0000281A loc_281A: ; CODE XREF: adcClibrationDataVerifySelfChecksum+28j ROM:0000281A mov.b #1, r0l ROM:0000281C ROM:0000281C locret_281C: ; CODE XREF: adcClibrationDataVerifySelfChecksum+2Cj ROM:0000281C rts ROM:0000281C ; End of function adcClibrationDataVerifySelfChecksum ROM:0000281C ROM:0000281E ROM:0000281E ; =============== S U B R O U T I N E ======================================= ROM:0000281E ROM:0000281E ; () -> r0 ROM:0000281E ROM:0000281E adcSample: ; CODE XREF: checkBatteryForBelowGivenLevel+52p ROM:0000281E ; adcFactoryTestAndCalibrate+2p ROM:0000281E sub.w e6, e6 ROM:00002820 bset #4, @IO_PCR8:8 ROM:00002824 mov.b #0x10, r0l ROM:00002826 mov.b r0l, @IO_PDR8:8 ROM:00002828 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000282C mov.l #0x80040, er1 ; average 8 samples, divide by 0x40 ROM:00002832 ROM:00002832 loc_2832: ; CODE XREF: adcSample+66j ROM:00002832 bset #4, @CKSTPR1:8 ; ADC clock on ROM:00002836 nop ROM:00002838 nop ROM:0000283A nop ROM:0000283C nop ROM:0000283E nop ROM:00002840 bclr #6, @IRQ_IENR2:8 ; adc irq off ROM:00002844 mov.b @ADC_AMR:8, r0l ROM:00002846 and.b #0xF0, r0l ROM:00002848 or.b #7, r0l ROM:0000284A mov.b r0l, @ADC_AMR:8 ROM:0000284C mov.b @common_bit_flags:16, r0l ROM:00002850 bld #4, r0l ROM:00002852 bcc loc_285E:8 ROM:00002854 mov.b @ADC_AMR:8, r0l ROM:00002856 and.b #0xCF, r0l ROM:00002858 or.b #0x20, r0l ROM:0000285A mov.b r0l, @ADC_AMR:8 ROM:0000285C bra loc_2866:8 ROM:0000285E ; --------------------------------------------------------------------------- ROM:0000285E ROM:0000285E loc_285E: ; CODE XREF: adcSample+34j ROM:0000285E mov.b @ADC_AMR:8, r0l ROM:00002860 and.b #0xCF, r0l ROM:00002862 or.b #0x30, r0l ROM:00002864 mov.b r0l, @ADC_AMR:8 ROM:00002866 ROM:00002866 loc_2866: ; CODE XREF: adcSample+3Ej ROM:00002866 bset #7, @ADC_AMR+1:8 ROM:0000286A ROM:0000286A loc_286A: ; CODE XREF: adcSample+4Ej ROM:0000286A mov.b @ADC_AMR+1:8, r0l ROM:0000286C bmi loc_286A:8 ROM:0000286E mov.b @ADC_AMR:8, r0l ROM:00002870 and.b #0xF0, r0l ROM:00002872 mov.b r0l, @ADC_AMR:8 ROM:00002874 bclr #4, @CKSTPR1:8 ROM:00002878 mov.w @ADC_ADRR:16, r0 ROM:0000287C extu.l er0 ROM:0000287E divxu.w r1, er0 ROM:00002880 add.w r0, e6 ROM:00002882 dec.w #1, e1 ROM:00002884 bne loc_2832:8 ROM:00002886 sub.b r0l, r0l ROM:00002888 mov.b r0l, @IO_PDR8:8 ROM:0000288A bclr #4, @IO_PCR8:8 ROM:0000288E mov.w e6, r0 ROM:00002890 exts.l er0 ROM:00002892 mov.b #8, r1l ROM:00002894 divxs.w r1, er0 ; div 8 ROM:00002898 rts ROM:00002898 ; End of function adcSample ROM:00002898 ROM:0000289A ROM:0000289A ; =============== S U B R O U T I N E ======================================= ROM:0000289A ROM:0000289A ; (r0 = level /* out of 20 */) -> bool isBelow ROM:0000289A ROM:0000289A checkBatteryForBelowGivenLevel: ; CODE XREF: ENTRY+8Cp ROM:0000289A ; measureBatteryAndSetGlobalFalgWhetherItIsLow+Cp ROM:0000289A push.l er3 ROM:0000289E push.w r5 ROM:000028A0 push.l er6 ROM:000028A4 subs #2, sp ROM:000028A6 mov.w r0, r6 ROM:000028A8 mov.w r7, r1 ROM:000028AA mov.w #2, e1 ROM:000028AE mov.l #0x1800080, er0 ; ADC calibration data ROM:000028B4 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:000028B4 ; ROM:000028B4 ; data is stored in two provided locations and read to RAM ROM:000028B4 ; each location includes a checksum right after the data (not inluded in length) ROM:000028B4 ; ROM:000028B4 ; if only one location has checksum-valid data, other is replaced with it ROM:000028B4 ; ROM:000028B4 ; if both appear valid, #0 is assumed dominant ROM:000028B4 ; ROM:000028B4 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:000028B8 mov.w @sp, r0 ROM:000028BA jsr adcClibrationDataVerifySelfChecksum:24 ; (r0 = word) -> r0l bool success ROM:000028BE mov.b r0l, r0l ROM:000028C0 bne adcCalibrationDataValueValid:8 ROM:000028C2 sub.w r0, r0 ROM:000028C4 mov.w r0, @sp ROM:000028C6 mov.w r7, r1 ROM:000028C8 mov.w #2, e1 ROM:000028CC mov.l #0x1800080, er0 ROM:000028D2 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000028D2 ; ROM:000028D2 ; see docs for readRedundantDataFromEeprom for format info ROM:000028D6 ROM:000028D6 adcCalibrationDataValueValid: ; CODE XREF: checkBatteryForBelowGivenLevel+26j ROM:000028D6 mov.w @sp, r0 ROM:000028D8 and.w #0xFFF, r0 ; get the raw value ROM:000028DC mov.w r0, @sp ROM:000028DE mov.w @sp, r0 ROM:000028E0 mulxu.w r6, er0 ROM:000028E2 extu.l er0 ROM:000028E4 mov.w #0x14, r1 ROM:000028E8 divxu.w r1, er0 ROM:000028EA mov.w r0, @sp ROM:000028EC jsr adcSample:24 ; () -> r0 ROM:000028F0 mov.w @sp, e0 ROM:000028F2 cmp.w e0, r0 ROM:000028F4 bhi loc_28FA:8 ROM:000028F6 mov.b #1, r0l ROM:000028F8 bra loc_28FC:8 ROM:000028FA ; --------------------------------------------------------------------------- ROM:000028FA ROM:000028FA loc_28FA: ; CODE XREF: checkBatteryForBelowGivenLevel+5Aj ROM:000028FA sub.b r0l, r0l ROM:000028FC ROM:000028FC loc_28FC: ; CODE XREF: checkBatteryForBelowGivenLevel+5Ej ROM:000028FC adds #2, sp ROM:000028FE pop.l er6 ROM:00002902 pop.w r5 ROM:00002904 pop.l er3 ROM:00002908 rts ROM:00002908 ; End of function checkBatteryForBelowGivenLevel ROM:00002908 ROM:0000290A ROM:0000290A ; =============== S U B R O U T I N E ======================================= ROM:0000290A ROM:0000290A ROM:0000290A measureBatteryAndSetGlobalFalgWhetherItIsLow: ROM:0000290A ; CODE XREF: sleepModeEventLoop+E2p ROM:0000290A mov.b @common_bit_flags:16, r0l ROM:0000290E bld #2, r0l ROM:00002910 bcc locret_2936:8 ROM:00002912 mov.w #0x14, r0 ROM:00002916 bsr checkBatteryForBelowGivenLevel:8 ; (r0 = level /* out of 20 */) -> bool isBelow ROM:00002918 mov.b r0l, r0l ROM:0000291A beq loc_2926:8 ROM:0000291C mov.w #common_bit_flags, r0 ROM:00002920 bset #1, @er0 ROM:00002924 bra loc_292E:8 ROM:00002926 ; --------------------------------------------------------------------------- ROM:00002926 ROM:00002926 loc_2926: ; CODE XREF: measureBatteryAndSetGlobalFalgWhetherItIsLow+10j ROM:00002926 mov.w #common_bit_flags, r0 ROM:0000292A bclr #1, @er0 ROM:0000292E ROM:0000292E loc_292E: ; CODE XREF: measureBatteryAndSetGlobalFalgWhetherItIsLow+1Aj ROM:0000292E mov.w #common_bit_flags, r0 ROM:00002932 bclr #2, @er0 ROM:00002936 ROM:00002936 locret_2936: ; CODE XREF: measureBatteryAndSetGlobalFalgWhetherItIsLow+6j ROM:00002936 rts ROM:00002936 ; End of function measureBatteryAndSetGlobalFalgWhetherItIsLow ROM:00002936 ROM:00002938 ROM:00002938 ; =============== S U B R O U T I N E ======================================= ROM:00002938 ROM:00002938 ROM:00002938 sub_2938: ; CODE XREF: interactionHandlerPokeRadar+32p ROM:00002938 sub.b r0l, r0l ROM:0000293A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000293A ; battle: ROM:0000293A ; 0 - battle opening animation ROM:0000293A ; 1 - "XYZ appeared" message ROM:0000293A ; 2 - "attack evade catch" directions shown ROM:0000293A ; 3 - our action taken. details in gCurSubstateF ROM:0000293A ; 4 - poke action taken. details in gCurSubstateF ROM:0000293A ; 5 - "was too strong" ROM:0000293A ; 6 - we lost ROM:0000293A ; 7 - fled ROM:0000293A ; 8 - staredown ROM:0000293A ; 9 - almost had it ROM:0000293A ; 10 - "threw a pokeball" ROM:0000293A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000293A ; 12, 14 - pokeball flying ROM:0000293A ; 13 - pokeball flying ROM:0000293A ; 15 - catch animation plays ROM:0000293A ; 16 - caught! ROM:0000293A ; switcht: ROM:0000293A ; cur slected poke name ROM:0000293E mov.b #4, r0h ROM:00002940 mov.b r0h, @gCurSubstateA:16 ; Substate for various modes ROM:00002940 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002940 ; ItemScreenHandler: ROM:00002940 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002940 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002940 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002940 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002940 ; 0x0010 - light grey pokeball ROM:00002940 ; 0x0020 - tiny map icon ROM:00002940 ; 0x0040 - found item #0 (slot nonempty) ROM:00002940 ; 0x0080 - found item #1 (slot nonempty) ROM:00002940 ; 0x0100 - found item #2 (slot nonempty) ROM:00002940 ; 0x0200 - grey item icon ROM:00002940 ; ItemRXed - what was RXed ROM:00002940 ; 0 - event pokemon ROM:00002940 ; 1 - special route ROM:00002940 ; 2 - item ROM:00002940 ; 3 - special ROM:00002940 ; 4 - stamp: heart ROM:00002940 ; 5 - stamp: spade ROM:00002940 ; 6 - stamp: diamond ROM:00002940 ; 7 - stamp: club ROM:00002940 ; switch: ROM:00002940 ; zero - pokemon does ROM:00002940 ; nonzero - item needs to be switched ROM:00002940 ; item RXed: ROM:00002940 ; what sort of thing was RXed: item, map, route, etc ROM:00002944 mov.b r0h, @gCurSubstateA+1:16 ; Substate for various modes ROM:00002944 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002944 ; ItemScreenHandler: ROM:00002944 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002944 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002944 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002944 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002944 ; 0x0010 - light grey pokeball ROM:00002944 ; 0x0020 - tiny map icon ROM:00002944 ; 0x0040 - found item #0 (slot nonempty) ROM:00002944 ; 0x0080 - found item #1 (slot nonempty) ROM:00002944 ; 0x0100 - found item #2 (slot nonempty) ROM:00002944 ; 0x0200 - grey item icon ROM:00002944 ; ItemRXed - what was RXed ROM:00002944 ; 0 - event pokemon ROM:00002944 ; 1 - special route ROM:00002944 ; 2 - item ROM:00002944 ; 3 - special ROM:00002944 ; 4 - stamp: heart ROM:00002944 ; 5 - stamp: spade ROM:00002944 ; 6 - stamp: diamond ROM:00002944 ; 7 - stamp: club ROM:00002944 ; switch: ROM:00002944 ; zero - pokemon does ROM:00002944 ; nonzero - item needs to be switched ROM:00002944 ; item RXed: ROM:00002944 ; what sort of thing was RXed: item, map, route, etc ROM:00002948 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002948 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000294C mov.b #6, r1l ROM:0000294E mov.b r1l, @gCurSubstateB+1:16 ; Substate: ROM:0000294E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002952 mov.b #0x38, r1l ; '8' ROM:00002954 mov.b r1l, @gCurSubstateC:16 ROM:00002958 mov.b #0xE0, r1l ; 'a' ROM:0000295A mov.b r1l, @gCurSubstateD:16 ROM:0000295E mov.b @gCurSubstateF:16, r1l ; different per view ROM:0000295E ; battle: ROM:0000295E ; bitfield [3..5]: battle action animation (our action) ROM:0000295E ; 0 - attacked ROM:0000295E ; 1 - evaded ROM:0000295E ; 2 - critical hit ROM:0000295E ; bitfield [1..2]: battle action animation (their action) ROM:0000295E ; 0 - attacked ROM:0000295E ; 1 - evaded ROM:0000295E ; 2 - critical hit ROM:00002962 and.b #0x1E, r1l ROM:00002964 mov.b r1l, @gCurSubstateF:16 ; different per view ROM:00002964 ; battle: ROM:00002964 ; bitfield [3..5]: battle action animation (our action) ROM:00002964 ; 0 - attacked ROM:00002964 ; 1 - evaded ROM:00002964 ; 2 - critical hit ROM:00002964 ; bitfield [1..2]: battle action animation (their action) ROM:00002964 ; 0 - attacked ROM:00002964 ; 1 - evaded ROM:00002964 ; 2 - critical hit ROM:00002968 mov.b r0l, @gCurSubstateF+1:16 ; different per view ROM:00002968 ; battle: ROM:00002968 ; bitfield [3..5]: battle action animation (our action) ROM:00002968 ; 0 - attacked ROM:00002968 ; 1 - evaded ROM:00002968 ; 2 - critical hit ROM:00002968 ; bitfield [1..2]: battle action animation (their action) ROM:00002968 ; 0 - attacked ROM:00002968 ; 1 - evaded ROM:00002968 ; 2 - critical hit ROM:0000296C mov.b #0xA, r0l ROM:0000296E jmp randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000296E ; End of function sub_2938 ROM:0000296E ROM:00002972 ROM:00002972 ; =============== S U B R O U T I N E ======================================= ROM:00002972 ROM:00002972 ROM:00002972 sub_2972: ; CODE XREF: interactionHandlerPokeBattle+12p ROM:00002972 jsr is_F7C4_nonzero:24 ROM:00002976 mov.b r0l, r0l ROM:00002978 bne locret_2A94:16 ROM:0000297C jsr rand:24 ROM:00002980 shlr.l er0 ROM:00002982 shlr.l er0 ROM:00002984 shlr.l er0 ROM:00002986 sub.l er1, er1 ROM:00002988 mov.b #100, r1l ROM:0000298A jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000298E mov.b r1l, r6l ROM:00002990 mov.w #0xBB36, e1 ROM:00002994 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002994 ; battle: ROM:00002994 ; bitfield [3..5]: battle action animation (our action) ROM:00002994 ; 0 - attacked ROM:00002994 ; 1 - evaded ROM:00002994 ; 2 - critical hit ROM:00002994 ; bitfield [1..2]: battle action animation (their action) ROM:00002994 ; 0 - attacked ROM:00002994 ; 1 - evaded ROM:00002994 ; 2 - critical hit ROM:00002998 rotl.b r0l ROM:0000299A rotl.b r0l ROM:0000299C rotl.b r0l ROM:0000299E and.b #7, r0l ROM:000029A0 mov.b #3, r0h ROM:000029A2 mulxu.b r0h, r0 ROM:000029A4 mov.w r0, e4 ROM:000029A6 inc.w #2, r0 ROM:000029A8 add.w e1, r0 ROM:000029AA mov.b @er0, r0l ROM:000029AC cmp.b r0l, r1l ROM:000029AE bcc loc_29BA:8 ROM:000029B0 mov.b @gCurSubstateF:16, r0l ; different per view ROM:000029B0 ; battle: ROM:000029B0 ; bitfield [3..5]: battle action animation (our action) ROM:000029B0 ; 0 - attacked ROM:000029B0 ; 1 - evaded ROM:000029B0 ; 2 - critical hit ROM:000029B0 ; bitfield [1..2]: battle action animation (their action) ROM:000029B0 ; 0 - attacked ROM:000029B0 ; 1 - evaded ROM:000029B0 ; 2 - critical hit ROM:000029B4 and.b #0xE7, r0l ROM:000029B6 or.b #0x10, r0l ROM:000029B8 bra loc_29E8:8 ROM:000029BA ; --------------------------------------------------------------------------- ROM:000029BA ROM:000029BA loc_29BA: ; CODE XREF: sub_2972+3Cj ROM:000029BA mov.w e4, r0 ROM:000029BC inc.w #2, r0 ROM:000029BE add.w e1, r0 ROM:000029C0 mov.b @er0, r0l ROM:000029C2 extu.w r0 ROM:000029C4 mov.w e4, e0 ROM:000029C6 inc.w #1, e0 ROM:000029C8 add.w e1, e0 ROM:000029CA mov.w e0, r1 ROM:000029CC mov.b @er1, r1l ROM:000029CE extu.w r1 ROM:000029D0 add.w r1, r0 ROM:000029D2 extu.w r6 ROM:000029D4 cmp.w r0, r6 ROM:000029D6 bge loc_29E2:8 ROM:000029D8 mov.b @gCurSubstateF:16, r0l ; different per view ROM:000029D8 ; battle: ROM:000029D8 ; bitfield [3..5]: battle action animation (our action) ROM:000029D8 ; 0 - attacked ROM:000029D8 ; 1 - evaded ROM:000029D8 ; 2 - critical hit ROM:000029D8 ; bitfield [1..2]: battle action animation (their action) ROM:000029D8 ; 0 - attacked ROM:000029D8 ; 1 - evaded ROM:000029D8 ; 2 - critical hit ROM:000029DC and.b #0xE7, r0l ROM:000029DE or.b #8, r0l ROM:000029E0 bra loc_29E8:8 ROM:000029E2 ; --------------------------------------------------------------------------- ROM:000029E2 ROM:000029E2 loc_29E2: ; CODE XREF: sub_2972+64j ROM:000029E2 mov.b @gCurSubstateF:16, r0l ; different per view ROM:000029E2 ; battle: ROM:000029E2 ; bitfield [3..5]: battle action animation (our action) ROM:000029E2 ; 0 - attacked ROM:000029E2 ; 1 - evaded ROM:000029E2 ; 2 - critical hit ROM:000029E2 ; bitfield [1..2]: battle action animation (their action) ROM:000029E2 ; 0 - attacked ROM:000029E2 ; 1 - evaded ROM:000029E2 ; 2 - critical hit ROM:000029E6 and.b #0xE7, r0l ROM:000029E8 ROM:000029E8 loc_29E8: ; CODE XREF: sub_2972+46j ROM:000029E8 ; sub_2972+6Ej ROM:000029E8 mov.b r0l, @gCurSubstateF:16 ; different per view ROM:000029E8 ; battle: ROM:000029E8 ; bitfield [3..5]: battle action animation (our action) ROM:000029E8 ; 0 - attacked ROM:000029E8 ; 1 - evaded ROM:000029E8 ; 2 - critical hit ROM:000029E8 ; bitfield [1..2]: battle action animation (their action) ROM:000029E8 ; 0 - attacked ROM:000029E8 ; 1 - evaded ROM:000029E8 ; 2 - critical hit ROM:000029EC mov.b #4, r0l ROM:000029EE jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000029EE ; // 0x02 - enter ROM:000029EE ; // 0x04 - left ROM:000029EE ; // 0x08 - right ROM:000029F2 mov.b r0l, r0l ROM:000029F4 beq loc_2A16:8 ROM:000029F6 mov.b @gCurSubstateF:16, r0l ; different per view ROM:000029F6 ; battle: ROM:000029F6 ; bitfield [3..5]: battle action animation (our action) ROM:000029F6 ; 0 - attacked ROM:000029F6 ; 1 - evaded ROM:000029F6 ; 2 - critical hit ROM:000029F6 ; bitfield [1..2]: battle action animation (their action) ROM:000029F6 ; 0 - attacked ROM:000029F6 ; 1 - evaded ROM:000029F6 ; 2 - critical hit ROM:000029FA and.b #0xF9, r0l ROM:000029FC mov.b r0l, @gCurSubstateF:16 ; different per view ROM:000029FC ; battle: ROM:000029FC ; bitfield [3..5]: battle action animation (our action) ROM:000029FC ; 0 - attacked ROM:000029FC ; 1 - evaded ROM:000029FC ; 2 - critical hit ROM:000029FC ; bitfield [1..2]: battle action animation (their action) ROM:000029FC ; 0 - attacked ROM:000029FC ; 1 - evaded ROM:000029FC ; 2 - critical hit ROM:00002A00 shlr.b r0l ROM:00002A02 shlr.b r0l ROM:00002A04 shlr.b r0l ROM:00002A06 and.b #3, r0l ROM:00002A08 beq loc_2A12:8 ROM:00002A0A cmp.b #2, r0l ROM:00002A0C beq loc_2A12:8 ROM:00002A0E cmp.b #1, r0l ROM:00002A10 bne loc_2A16:8 ROM:00002A12 ROM:00002A12 loc_2A12: ; CODE XREF: sub_2972+96j ROM:00002A12 ; sub_2972+9Aj ROM:00002A12 mov.b #3, r0l ROM:00002A14 bra loc_2A64:8 ROM:00002A16 ; --------------------------------------------------------------------------- ROM:00002A16 ROM:00002A16 loc_2A16: ; CODE XREF: sub_2972+82j ROM:00002A16 ; sub_2972+9Ej ROM:00002A16 mov.b #8, r0l ROM:00002A18 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00002A18 ; // 0x02 - enter ROM:00002A18 ; // 0x04 - left ROM:00002A18 ; // 0x08 - right ROM:00002A1C mov.b r0l, r0l ROM:00002A1E beq loc_2A72:8 ROM:00002A20 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002A20 ; battle: ROM:00002A20 ; bitfield [3..5]: battle action animation (our action) ROM:00002A20 ; 0 - attacked ROM:00002A20 ; 1 - evaded ROM:00002A20 ; 2 - critical hit ROM:00002A20 ; bitfield [1..2]: battle action animation (their action) ROM:00002A20 ; 0 - attacked ROM:00002A20 ; 1 - evaded ROM:00002A20 ; 2 - critical hit ROM:00002A24 and.b #0xF9, r0l ROM:00002A26 or.b #2, r0l ROM:00002A28 mov.b r0l, @gCurSubstateF:16 ; different per view ROM:00002A28 ; battle: ROM:00002A28 ; bitfield [3..5]: battle action animation (our action) ROM:00002A28 ; 0 - attacked ROM:00002A28 ; 1 - evaded ROM:00002A28 ; 2 - critical hit ROM:00002A28 ; bitfield [1..2]: battle action animation (their action) ROM:00002A28 ; 0 - attacked ROM:00002A28 ; 1 - evaded ROM:00002A28 ; 2 - critical hit ROM:00002A2C shlr.b r0l ROM:00002A2E shlr.b r0l ROM:00002A30 shlr.b r0l ROM:00002A32 and.b #3, r0l ROM:00002A34 cmp.b #2, r0l ROM:00002A36 beq loc_2A42:8 ROM:00002A38 cmp.b #1, r0l ROM:00002A3A beq loc_2A58:8 ROM:00002A3C cmp.b #0, r0l ROM:00002A3E bne loc_2A72:8 ROM:00002A40 bra loc_2A62:8 ROM:00002A42 ; --------------------------------------------------------------------------- ROM:00002A42 ROM:00002A42 loc_2A42: ; CODE XREF: sub_2972+C4j ROM:00002A42 mov.b #0xE, r0l ROM:00002A44 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00002A48 mov.b #7, r0l ROM:00002A4A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002A4A ; battle: ROM:00002A4A ; 0 - battle opening animation ROM:00002A4A ; 1 - "XYZ appeared" message ROM:00002A4A ; 2 - "attack evade catch" directions shown ROM:00002A4A ; 3 - our action taken. details in gCurSubstateF ROM:00002A4A ; 4 - poke action taken. details in gCurSubstateF ROM:00002A4A ; 5 - "was too strong" ROM:00002A4A ; 6 - we lost ROM:00002A4A ; 7 - fled ROM:00002A4A ; 8 - staredown ROM:00002A4A ; 9 - almost had it ROM:00002A4A ; 10 - "threw a pokeball" ROM:00002A4A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002A4A ; 12, 14 - pokeball flying ROM:00002A4A ; 13 - pokeball flying ROM:00002A4A ; 15 - catch animation plays ROM:00002A4A ; 16 - caught! ROM:00002A4A ; switcht: ROM:00002A4A ; cur slected poke name ROM:00002A4E sub.b r0l, r0l ROM:00002A50 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002A50 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002A54 mov.b #0xA, r0l ROM:00002A56 bra loc_2A90:8 ROM:00002A58 ; --------------------------------------------------------------------------- ROM:00002A58 ROM:00002A58 loc_2A58: ; CODE XREF: sub_2972+C8j ROM:00002A58 sub.b r0l, r0l ROM:00002A5A jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00002A5E mov.b #8, r0l ROM:00002A60 bra loc_2A84:8 ROM:00002A62 ; --------------------------------------------------------------------------- ROM:00002A62 ROM:00002A62 loc_2A62: ; CODE XREF: sub_2972+CEj ROM:00002A62 mov.b #4, r0l ROM:00002A64 ROM:00002A64 loc_2A64: ; CODE XREF: sub_2972+A2j ROM:00002A64 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002A64 ; battle: ROM:00002A64 ; 0 - battle opening animation ROM:00002A64 ; 1 - "XYZ appeared" message ROM:00002A64 ; 2 - "attack evade catch" directions shown ROM:00002A64 ; 3 - our action taken. details in gCurSubstateF ROM:00002A64 ; 4 - poke action taken. details in gCurSubstateF ROM:00002A64 ; 5 - "was too strong" ROM:00002A64 ; 6 - we lost ROM:00002A64 ; 7 - fled ROM:00002A64 ; 8 - staredown ROM:00002A64 ; 9 - almost had it ROM:00002A64 ; 10 - "threw a pokeball" ROM:00002A64 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002A64 ; 12, 14 - pokeball flying ROM:00002A64 ; 13 - pokeball flying ROM:00002A64 ; 15 - catch animation plays ROM:00002A64 ; 16 - caught! ROM:00002A64 ; switcht: ROM:00002A64 ; cur slected poke name ROM:00002A68 sub.b r0l, r0l ROM:00002A6A mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002A6A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002A6E mov.b #8, r0l ROM:00002A70 bra loc_2A90:8 ROM:00002A72 ; --------------------------------------------------------------------------- ROM:00002A72 ROM:00002A72 loc_2A72: ; CODE XREF: sub_2972+ACj ROM:00002A72 ; sub_2972+CCj ROM:00002A72 mov.b #2, r0l ROM:00002A74 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00002A74 ; // 0x02 - enter ROM:00002A74 ; // 0x04 - left ROM:00002A74 ; // 0x08 - right ROM:00002A78 mov.b r0l, r0l ROM:00002A7A beq locret_2A94:8 ROM:00002A7C mov.b #0xF, r0l ROM:00002A7E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00002A82 mov.b #0xA, r0l ROM:00002A84 ROM:00002A84 loc_2A84: ; CODE XREF: sub_2972+EEj ROM:00002A84 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002A84 ; battle: ROM:00002A84 ; 0 - battle opening animation ROM:00002A84 ; 1 - "XYZ appeared" message ROM:00002A84 ; 2 - "attack evade catch" directions shown ROM:00002A84 ; 3 - our action taken. details in gCurSubstateF ROM:00002A84 ; 4 - poke action taken. details in gCurSubstateF ROM:00002A84 ; 5 - "was too strong" ROM:00002A84 ; 6 - we lost ROM:00002A84 ; 7 - fled ROM:00002A84 ; 8 - staredown ROM:00002A84 ; 9 - almost had it ROM:00002A84 ; 10 - "threw a pokeball" ROM:00002A84 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002A84 ; 12, 14 - pokeball flying ROM:00002A84 ; 13 - pokeball flying ROM:00002A84 ; 15 - catch animation plays ROM:00002A84 ; 16 - caught! ROM:00002A84 ; switcht: ROM:00002A84 ; cur slected poke name ROM:00002A88 sub.b r0l, r0l ROM:00002A8A mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002A8A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002A8E mov.b #6, r0l ROM:00002A90 ROM:00002A90 loc_2A90: ; CODE XREF: sub_2972+E4j ROM:00002A90 ; sub_2972+FEj ROM:00002A90 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:00002A90 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002A94 ROM:00002A94 locret_2A94: ; CODE XREF: sub_2972+6j ROM:00002A94 ; sub_2972+108j ROM:00002A94 rts ROM:00002A94 ; End of function sub_2972 ROM:00002A94 ROM:00002A96 ROM:00002A96 ; =============== S U B R O U T I N E ======================================= ROM:00002A96 ROM:00002A96 ; (void) //gCurSubstateY has poke index on route OR somethign else... 1..3 is poke on route, 4 is event poke ROM:00002A96 ROM:00002A96 recordPokeCaughtNormal: ; CODE XREF: interactionHandlerPokeBattle+3F6p ROM:00002A96 val_0x10 = e4 ROM:00002A96 push.l er5 ROM:00002A9A push.w e6 ROM:00002A9C mov.b @gCurSubstateY:16, r4l ; Substate: ROM:00002A9C ; gifted items view: this is item number that has focus and arrow ROM:00002A9C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00002A9C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00002A9C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00002AA0 add.b #-1, r4l ROM:00002AA2 cmp.b #3, r4l ROM:00002AA4 bhi out:16 ; invalid idx no? ROM:00002AA8 mov.w #0x10, val_0x10 ROM:00002AAC mov.w #eepromWriteData, r3 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00002AB0 mov.w #0xBE, e6 ; '+' ROM:00002AB4 mov.w #eepromReadToRamAlso, r5 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002AB8 cmp.b #3, r4l ROM:00002ABA bcc this_is_an_event_pokemon:16 ROM:00002ABE ROM:00002ABE this_is_route_poke: ; uses space in normal ir rx buffer (0xf8f0) ROM:00002ABE jsr setHeapPointer:24 ROM:00002AC2 mov.w #0x30, e5 ; '0' ROM:00002AC6 mov.w e5, r0 ROM:00002AC8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002ACC mov.w r0, r6 ROM:00002ACE mov.w r0, e0 ROM:00002AD0 mov.w #0xCE8C, r0 ROM:00002AD4 mov.w e5, r1 ROM:00002AD6 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002AD8 mov.w r6, r0 ROM:00002ADA jsr findFirstEmptyslotInCaughtPokeList:24 ; (ptr *pokeStruct) //returns 3 if all 3 slots are full, else idx of first empty slot ROM:00002ADE mov.b r0l, r4h ROM:00002AE0 cmp.b #3, r0l ROM:00002AE2 bcs have_space_for_this_poke:8 ROM:00002AE4 ROM:00002AE4 likely_already_have_3_caught_pokes_so_user_must_choose: ROM:00002AE4 sub.b r0h, r0h ROM:00002AE6 mov.b r0h, @gCurSubstateA:16 ; Substate for various modes ROM:00002AE6 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002AE6 ; ItemScreenHandler: ROM:00002AE6 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002AE6 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002AE6 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002AE6 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002AE6 ; 0x0010 - light grey pokeball ROM:00002AE6 ; 0x0020 - tiny map icon ROM:00002AE6 ; 0x0040 - found item #0 (slot nonempty) ROM:00002AE6 ; 0x0080 - found item #1 (slot nonempty) ROM:00002AE6 ; 0x0100 - found item #2 (slot nonempty) ROM:00002AE6 ; 0x0200 - grey item icon ROM:00002AE6 ; ItemRXed - what was RXed ROM:00002AE6 ; 0 - event pokemon ROM:00002AE6 ; 1 - special route ROM:00002AE6 ; 2 - item ROM:00002AE6 ; 3 - special ROM:00002AE6 ; 4 - stamp: heart ROM:00002AE6 ; 5 - stamp: spade ROM:00002AE6 ; 6 - stamp: diamond ROM:00002AE6 ; 7 - stamp: club ROM:00002AE6 ; switch: ROM:00002AE6 ; zero - pokemon does ROM:00002AE6 ; nonzero - item needs to be switched ROM:00002AE6 ; item RXed: ROM:00002AE6 ; what sort of thing was RXed: item, map, route, etc ROM:00002AEA jsr set_gCurSubstateZ_to_1:24 ; set gCurSubstateZ = 1 ROM:00002AEE mov.b #7, r0l ROM:00002AF0 jsr setCurrentlyActiveView:24 ROM:00002AF4 jmp out:24 ROM:00002AF8 ; --------------------------------------------------------------------------- ROM:00002AF8 ROM:00002AF8 have_space_for_this_poke: ; CODE XREF: recordPokeCaughtNormal+4Cj ROM:00002AF8 mov.w val_0x10, r1 ROM:00002AFA extu.w r0 ROM:00002AFC mov.w #0x10, e0 ; each route available poke struct is 0x10 bytes ROM:00002B00 mulxu.w e0, er0 ROM:00002B02 add.w r6, r0 ; memory space ROM:00002B04 mov.w r0, e0 ROM:00002B06 extu.w r4 ROM:00002B08 mov.w #0x10, val_0x10 ROM:00002B0C mulxu.w val_0x10, er4 ROM:00002B0E mov.w #0x8F52, r0 ; read avilable poke ROM:00002B12 add.w r4, r0 ROM:00002B14 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002B16 mov.w e5, r1 ROM:00002B18 mov.w r6, e0 ROM:00002B1A mov.w #0xCE8C, r0 ROM:00002B1E jsr @er3 ; eepromWriteData(r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len), //data in data buffer at 0xF8D6 ROM:00002B20 mov.w e6, r0 ROM:00002B22 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002B26 mov.w r0, r6 ROM:00002B28 mov.w e6, r1 ROM:00002B2A mov.w r0, e0 ROM:00002B2C mov.w #0x8F00, r0 ROM:00002B30 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002B32 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00002B32 ; gifted items view: this is item number that has focus and arrow ROM:00002B32 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00002B32 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00002B32 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00002B36 push.w r0 ROM:00002B38 mov.w #0x88, r0 ; 'ê' ROM:00002B3C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002B40 mov.w r0, e0 ROM:00002B42 mov.w r6, r0 ROM:00002B44 sub.l er1, er1 ROM:00002B46 mov.b #0xD, r1l ROM:00002B48 jmp log_the_event:24 ROM:00002B4C ; --------------------------------------------------------------------------- ROM:00002B4C ROM:00002B4C this_is_an_event_pokemon: ; CODE XREF: recordPokeCaughtNormal+24j ROM:00002B4C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00002B50 mov.w #0x68, r0 ; 'h' ROM:00002B54 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002B58 mov.w r0, e3 ROM:00002B5A mov.w #0xBF7A, r0 ROM:00002B5E jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00002B62 mov.b r0l, r4l ROM:00002B64 mov.b r0l, r1l ROM:00002B66 mov.w e3, r0 ROM:00002B68 jsr checkForWhetherWeveParticipatedInAGivenEvent:24 ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:00002B68 ; ROM:00002B68 ; always false for index 0 ROM:00002B6C mov.b r0l, r0l ROM:00002B6E bne out:16 ; already participated in the event?! ROM:00002B72 mov.w #0xB800, r0 ROM:00002B76 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00002B7A mov.b r0l, r4h ROM:00002B7C btst #5, r0l ROM:00002B7E bne out:16 ; already have event poke ROM:00002B82 mov.w #0x170, e5 ROM:00002B86 mov.w e5, r0 ROM:00002B88 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002B8C mov.w r0, r6 ROM:00002B8E mov.w r0, e0 ROM:00002B90 mov.w #0xBF08, r0 ROM:00002B94 mov.w val_0x10, r1 ROM:00002B96 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002B98 mov.w val_0x10, r1 ROM:00002B9A mov.w #0xBA44, r0 ROM:00002B9E mov.w r6, e0 ROM:00002BA0 jsr @er3 ; eepromWriteData(r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00002BA2 mov.w #0xBF18, r0 ROM:00002BA6 mov.w #0x2C, r1 ; ',' ROM:00002BAA mov.w r6, e0 ROM:00002BAC jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002BAE mov.w #0xBA54, r0 ROM:00002BB2 mov.w #0x2C, r1 ; ',' ROM:00002BB6 mov.w r6, e0 ROM:00002BB8 jsr @er3 ; eepromWriteData(r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00002BBA mov.w #0xBF7C, r0 ROM:00002BBE mov.w e5, r1 ROM:00002BC0 mov.w r6, e0 ROM:00002BC2 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002BC4 mov.w e5, r1 ROM:00002BC6 mov.w #0xBA80, r0 ROM:00002BCA mov.w r6, e0 ROM:00002BCC jsr @er3 ; eepromWriteData(r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00002BCE mov.w #0xC6FC, r0 ROM:00002BD2 mov.w #0x140, r1 ROM:00002BD6 mov.w r6, e0 ROM:00002BD8 jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002BDA mov.w r6, e0 ROM:00002BDC mov.w #0xBC00, r0 ROM:00002BE0 mov.w #0x140, r1 ROM:00002BE4 jsr @er3 ; eepromWriteData(r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00002BE6 or.b #0x20, r4h ROM:00002BE8 mov.b r4h, r1l ROM:00002BEA mov.w #0xB800, r0 ROM:00002BEE jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00002BF2 mov.b r4l, r1l ROM:00002BF4 mov.w e3, r0 ROM:00002BF6 jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:00002BFA mov.w e6, r0 ROM:00002BFC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002C00 mov.w r0, r6 ROM:00002C02 mov.w e6, r1 ; 0xBE ROM:00002C04 mov.w r0, e0 ROM:00002C06 mov.w #0x8F00, r0 ROM:00002C0A jsr @er5 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002C0C mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00002C0C ; gifted items view: this is item number that has focus and arrow ROM:00002C0C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00002C0C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00002C0C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00002C10 push.w r0 ROM:00002C12 mov.w #0x88, r0 ; 'ê' ROM:00002C16 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002C1A mov.w r0, e0 ROM:00002C1C mov.w r6, r0 ROM:00002C1E mov.l #0x10E, er1 ROM:00002C24 ROM:00002C24 log_the_event: ; CODE XREF: recordPokeCaughtNormal+B2j ROM:00002C24 jsr logEvent:24 ; ( ROM:00002C24 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00002C24 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00002C24 ; r1l = eventTYpe ROM:00002C24 ; r1h = boolean isOnSpecialEventRoute ROM:00002C24 ; e1 = extraInfo (eg: item type) ROM:00002C24 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00002C24 ; ) ROM:00002C28 adds #2, sp ROM:00002C2A ROM:00002C2A out: ; CODE XREF: recordPokeCaughtNormal+Ej ROM:00002C2A ; recordPokeCaughtNormal+5Ej ... ROM:00002C2A pop.w e6 ROM:00002C2C pop.l er5 ROM:00002C30 rts ROM:00002C30 ; End of function recordPokeCaughtNormal ROM:00002C30 ROM:00002C32 ROM:00002C32 ; =============== S U B R O U T I N E ======================================= ROM:00002C32 ROM:00002C32 ROM:00002C32 sub_2C32: ; CODE XREF: interactionHandlerPokeBattle+370p ROM:00002C32 jsr rand:24 ROM:00002C36 shlr.l er0 ROM:00002C38 shlr.l er0 ROM:00002C3A shlr.l er0 ROM:00002C3C sub.l er1, er1 ROM:00002C3E mov.b #0x64, r1l ; 'd' ROM:00002C40 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00002C44 mov.b r1l, r6h ROM:00002C46 mov.b @gCurSubstateA+1:16, r1l ; Substate for various modes ROM:00002C46 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002C46 ; ItemScreenHandler: ROM:00002C46 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002C46 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002C46 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002C46 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002C46 ; 0x0010 - light grey pokeball ROM:00002C46 ; 0x0020 - tiny map icon ROM:00002C46 ; 0x0040 - found item #0 (slot nonempty) ROM:00002C46 ; 0x0080 - found item #1 (slot nonempty) ROM:00002C46 ; 0x0100 - found item #2 (slot nonempty) ROM:00002C46 ; 0x0200 - grey item icon ROM:00002C46 ; ItemRXed - what was RXed ROM:00002C46 ; 0 - event pokemon ROM:00002C46 ; 1 - special route ROM:00002C46 ; 2 - item ROM:00002C46 ; 3 - special ROM:00002C46 ; 4 - stamp: heart ROM:00002C46 ; 5 - stamp: spade ROM:00002C46 ; 6 - stamp: diamond ROM:00002C46 ; 7 - stamp: club ROM:00002C46 ; switch: ROM:00002C46 ; zero - pokemon does ROM:00002C46 ; nonzero - item needs to be switched ROM:00002C46 ; item RXed: ROM:00002C46 ; what sort of thing was RXed: item, map, route, etc ROM:00002C4A beq loc_2C5E:8 ROM:00002C4C mov.b r1l, r0l ROM:00002C4E extu.w r0 ROM:00002C50 dec.w #1, r0 ROM:00002C52 mov.b @(byte_BB45,er0), r0l ROM:00002C56 cmp.b r0l, r6h ROM:00002C58 bcc loc_2C5E:8 ROM:00002C5A mov.b #1, r0l ROM:00002C5C bra locret_2C60:8 ROM:00002C5E ; --------------------------------------------------------------------------- ROM:00002C5E ROM:00002C5E loc_2C5E: ; CODE XREF: sub_2C32+18j ROM:00002C5E ; sub_2C32+26j ROM:00002C5E sub.b r0l, r0l ROM:00002C60 ROM:00002C60 locret_2C60: ; CODE XREF: sub_2C32+2Aj ROM:00002C60 rts ROM:00002C60 ; End of function sub_2C32 ROM:00002C60 ROM:00002C62 ROM:00002C62 ; =============== S U B R O U T I N E ======================================= ROM:00002C62 ROM:00002C62 ROM:00002C62 interactionHandlerPokeBattle: ; CODE XREF: interactionHandler:case_0x04p ROM:00002C62 mov.l #0x880000, er5 ROM:00002C68 mov.w #0xBE, e6 ; '+' ROM:00002C6C mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00002C6C ; battle: ROM:00002C6C ; 0 - battle opening animation ROM:00002C6C ; 1 - "XYZ appeared" message ROM:00002C6C ; 2 - "attack evade catch" directions shown ROM:00002C6C ; 3 - our action taken. details in gCurSubstateF ROM:00002C6C ; 4 - poke action taken. details in gCurSubstateF ROM:00002C6C ; 5 - "was too strong" ROM:00002C6C ; 6 - we lost ROM:00002C6C ; 7 - fled ROM:00002C6C ; 8 - staredown ROM:00002C6C ; 9 - almost had it ROM:00002C6C ; 10 - "threw a pokeball" ROM:00002C6C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002C6C ; 12, 14 - pokeball flying ROM:00002C6C ; 13 - pokeball flying ROM:00002C6C ; 15 - catch animation plays ROM:00002C6C ; 16 - caught! ROM:00002C6C ; switcht: ROM:00002C6C ; cur slected poke name ROM:00002C70 cmp.b #2, r0l ROM:00002C72 bne loc_2C7C:8 ROM:00002C74 jsr sub_2972:24 ROM:00002C78 jmp case_0x02_:24 ROM:00002C7C ; --------------------------------------------------------------------------- ROM:00002C7C ROM:00002C7C loc_2C7C: ; CODE XREF: interactionHandlerPokeBattle+10j ROM:00002C7C mov.b @gCurSubstateB:16, r6l ; Substate: ROM:00002C7C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002C80 mov.b @gCurSubstateB+1:16, r6h ; Substate: ROM:00002C80 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002C84 cmp.b #0x11, r0l ROM:00002C86 bhi case_0x02_:16 ROM:00002C8A extu.w r0 ROM:00002C8C add.w r0, r0 ROM:00002C8E mov.w @(JUMPTABLE_2C8E,er0), r0 ROM:00002C92 jmp @er0 ROM:00002C94 ; --------------------------------------------------------------------------- ROM:00002C94 ROM:00002C94 case_0x00_: ; DATA XREF: ROM:JUMPTABLE_2C8Eo ROM:00002C94 cmp.b r6h, r6l ROM:00002C96 bcs case_0x02_:16 ROM:00002C9A mov.b #1, r0l ROM:00002C9C jmp loc_2FB4:24 ROM:00002CA0 ; --------------------------------------------------------------------------- ROM:00002CA0 ROM:00002CA0 case_0x01_: ; DATA XREF: ROM:0000BAC8o ROM:00002CA0 mov.b r6l, r0l ROM:00002CA2 extu.w r0 ROM:00002CA4 mov.b @(byte_BB0E,er0), r0l ROM:00002CA8 mov.b r0l, @gCurSubstateD:16 ROM:00002CAC mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00002CAC ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002CB0 mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:00002CB0 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002CB4 cmp.b r0h, r0l ROM:00002CB6 bcs case_0x02_:16 ROM:00002CBA mov.w #gCurSubstateF, r0 ; different per view ROM:00002CBA ; battle: ROM:00002CBA ; bitfield [3..5]: battle action animation (our action) ROM:00002CBA ; 0 - attacked ROM:00002CBA ; 1 - evaded ROM:00002CBA ; 2 - critical hit ROM:00002CBA ; bitfield [1..2]: battle action animation (their action) ROM:00002CBA ; 0 - attacked ROM:00002CBA ; 1 - evaded ROM:00002CBA ; 2 - critical hit ROM:00002CBE bset #0, @er0 ROM:00002CC2 jsr is_F7C4_nonzero:24 ROM:00002CC6 mov.b r0l, r0l ROM:00002CC8 bne case_0x02_:16 ROM:00002CCC mov.b #0xE, r0l ROM:00002CCE jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00002CCE ; // 0x02 - enter ROM:00002CCE ; // 0x04 - left ROM:00002CCE ; // 0x08 - right ROM:00002CD2 mov.b r0l, r0l ROM:00002CD4 beq case_0x02_:16 ROM:00002CD8 jmp loc_2E32:24 ROM:00002CDC ; --------------------------------------------------------------------------- ROM:00002CDC ROM:00002CDC case_0x03_: ; DATA XREF: ROM:0000BACCo ROM:00002CDC mov.b r6l, r0l ROM:00002CDE extu.w r0 ROM:00002CE0 shll.w r0 ROM:00002CE2 mov.b @(byte_BB12,er0), r0l ROM:00002CE6 mov.b r0l, @gCurSubstateC:16 ROM:00002CEA mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00002CEA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002CEE extu.w r0 ROM:00002CF0 shll.w r0 ROM:00002CF2 mov.b @(byte_BB13,er0), r0l ROM:00002CF6 mov.b r0l, @gCurSubstateD:16 ROM:00002CFA jsr is_F7C4_nonzero:24 ROM:00002CFE mov.b r0l, r0l ROM:00002D00 bne case_0x02_:16 ROM:00002D04 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00002D04 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002D08 mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:00002D08 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002D0C cmp.b r0h, r0l ROM:00002D0E bcs case_0x02_:16 ROM:00002D12 mov.b #0x38, r0l ; '8' ROM:00002D14 mov.b r0l, @gCurSubstateC:16 ROM:00002D18 mov.b #8, r0l ROM:00002D1A mov.b r0l, @gCurSubstateD:16 ROM:00002D1E mov.b @gCurSubstateA+1:16, r6l ; Substate for various modes ROM:00002D1E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002D1E ; ItemScreenHandler: ROM:00002D1E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002D1E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002D1E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002D1E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002D1E ; 0x0010 - light grey pokeball ROM:00002D1E ; 0x0020 - tiny map icon ROM:00002D1E ; 0x0040 - found item #0 (slot nonempty) ROM:00002D1E ; 0x0080 - found item #1 (slot nonempty) ROM:00002D1E ; 0x0100 - found item #2 (slot nonempty) ROM:00002D1E ; 0x0200 - grey item icon ROM:00002D1E ; ItemRXed - what was RXed ROM:00002D1E ; 0 - event pokemon ROM:00002D1E ; 1 - special route ROM:00002D1E ; 2 - item ROM:00002D1E ; 3 - special ROM:00002D1E ; 4 - stamp: heart ROM:00002D1E ; 5 - stamp: spade ROM:00002D1E ; 6 - stamp: diamond ROM:00002D1E ; 7 - stamp: club ROM:00002D1E ; switch: ROM:00002D1E ; zero - pokemon does ROM:00002D1E ; nonzero - item needs to be switched ROM:00002D1E ; item RXed: ROM:00002D1E ; what sort of thing was RXed: item, map, route, etc ROM:00002D22 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002D22 ; battle: ROM:00002D22 ; bitfield [3..5]: battle action animation (our action) ROM:00002D22 ; 0 - attacked ROM:00002D22 ; 1 - evaded ROM:00002D22 ; 2 - critical hit ROM:00002D22 ; bitfield [1..2]: battle action animation (their action) ROM:00002D22 ; 0 - attacked ROM:00002D22 ; 1 - evaded ROM:00002D22 ; 2 - critical hit ROM:00002D26 shlr.b r0l ROM:00002D28 shlr.b r0l ROM:00002D2A shlr.b r0l ROM:00002D2C and.b #3, r0l ROM:00002D2E beq loc_2D3C:8 ROM:00002D30 cmp.b #1, r0l ROM:00002D32 beq loc_2D76:8 ROM:00002D34 cmp.b #2, r0l ROM:00002D36 bne case_0x02_:16 ROM:00002D3A bra loc_2D6A:8 ROM:00002D3C ; --------------------------------------------------------------------------- ROM:00002D3C ROM:00002D3C loc_2D3C: ; CODE XREF: interactionHandlerPokeBattle+CCj ROM:00002D3C cmp.b #1, r6l ROM:00002D3E bls loc_2D7C:8 ROM:00002D40 mov.b r6l, r0l ROM:00002D42 dec.b r0l ROM:00002D44 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00002D44 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002D44 ; ItemScreenHandler: ROM:00002D44 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002D44 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002D44 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002D44 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002D44 ; 0x0010 - light grey pokeball ROM:00002D44 ; 0x0020 - tiny map icon ROM:00002D44 ; 0x0040 - found item #0 (slot nonempty) ROM:00002D44 ; 0x0080 - found item #1 (slot nonempty) ROM:00002D44 ; 0x0100 - found item #2 (slot nonempty) ROM:00002D44 ; 0x0200 - grey item icon ROM:00002D44 ; ItemRXed - what was RXed ROM:00002D44 ; 0 - event pokemon ROM:00002D44 ; 1 - special route ROM:00002D44 ; 2 - item ROM:00002D44 ; 3 - special ROM:00002D44 ; 4 - stamp: heart ROM:00002D44 ; 5 - stamp: spade ROM:00002D44 ; 6 - stamp: diamond ROM:00002D44 ; 7 - stamp: club ROM:00002D44 ; switch: ROM:00002D44 ; zero - pokemon does ROM:00002D44 ; nonzero - item needs to be switched ROM:00002D44 ; item RXed: ROM:00002D44 ; what sort of thing was RXed: item, map, route, etc ROM:00002D48 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002D48 ; battle: ROM:00002D48 ; bitfield [3..5]: battle action animation (our action) ROM:00002D48 ; 0 - attacked ROM:00002D48 ; 1 - evaded ROM:00002D48 ; 2 - critical hit ROM:00002D48 ; bitfield [1..2]: battle action animation (their action) ROM:00002D48 ; 0 - attacked ROM:00002D48 ; 1 - evaded ROM:00002D48 ; 2 - critical hit ROM:00002D4C shlr.b r0l ROM:00002D4E and.b #3, r0l ROM:00002D50 beq loc_2D76:8 ROM:00002D52 cmp.b #1, r0l ROM:00002D54 bne case_0x02_:16 ROM:00002D58 mov.b #2, r0l ROM:00002D5A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002D5A ; battle: ROM:00002D5A ; 0 - battle opening animation ROM:00002D5A ; 1 - "XYZ appeared" message ROM:00002D5A ; 2 - "attack evade catch" directions shown ROM:00002D5A ; 3 - our action taken. details in gCurSubstateF ROM:00002D5A ; 4 - poke action taken. details in gCurSubstateF ROM:00002D5A ; 5 - "was too strong" ROM:00002D5A ; 6 - we lost ROM:00002D5A ; 7 - fled ROM:00002D5A ; 8 - staredown ROM:00002D5A ; 9 - almost had it ROM:00002D5A ; 10 - "threw a pokeball" ROM:00002D5A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002D5A ; 12, 14 - pokeball flying ROM:00002D5A ; 13 - pokeball flying ROM:00002D5A ; 15 - catch animation plays ROM:00002D5A ; 16 - caught! ROM:00002D5A ; switcht: ROM:00002D5A ; cur slected poke name ROM:00002D5E mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002D5E ; battle: ROM:00002D5E ; bitfield [3..5]: battle action animation (our action) ROM:00002D5E ; 0 - attacked ROM:00002D5E ; 1 - evaded ROM:00002D5E ; 2 - critical hit ROM:00002D5E ; bitfield [1..2]: battle action animation (their action) ROM:00002D5E ; 0 - attacked ROM:00002D5E ; 1 - evaded ROM:00002D5E ; 2 - critical hit ROM:00002D62 and.b #0x1F, r0l ROM:00002D64 or.b #0x20, r0l ROM:00002D66 jmp loc_2F06:24 ROM:00002D6A ; --------------------------------------------------------------------------- ROM:00002D6A ROM:00002D6A loc_2D6A: ; CODE XREF: interactionHandlerPokeBattle+D8j ROM:00002D6A cmp.b #2, r6l ROM:00002D6C bls loc_2D7C:8 ROM:00002D6E mov.b r6l, r0l ROM:00002D70 add.b #0xFE, r0l ; '¦' ROM:00002D72 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00002D72 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002D72 ; ItemScreenHandler: ROM:00002D72 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002D72 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002D72 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002D72 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002D72 ; 0x0010 - light grey pokeball ROM:00002D72 ; 0x0020 - tiny map icon ROM:00002D72 ; 0x0040 - found item #0 (slot nonempty) ROM:00002D72 ; 0x0080 - found item #1 (slot nonempty) ROM:00002D72 ; 0x0100 - found item #2 (slot nonempty) ROM:00002D72 ; 0x0200 - grey item icon ROM:00002D72 ; ItemRXed - what was RXed ROM:00002D72 ; 0 - event pokemon ROM:00002D72 ; 1 - special route ROM:00002D72 ; 2 - item ROM:00002D72 ; 3 - special ROM:00002D72 ; 4 - stamp: heart ROM:00002D72 ; 5 - stamp: spade ROM:00002D72 ; 6 - stamp: diamond ROM:00002D72 ; 7 - stamp: club ROM:00002D72 ; switch: ROM:00002D72 ; zero - pokemon does ROM:00002D72 ; nonzero - item needs to be switched ROM:00002D72 ; item RXed: ROM:00002D72 ; what sort of thing was RXed: item, map, route, etc ROM:00002D76 ROM:00002D76 loc_2D76: ; CODE XREF: interactionHandlerPokeBattle+D0j ROM:00002D76 ; interactionHandlerPokeBattle+EEj ROM:00002D76 mov.b #4, r0l ROM:00002D78 jmp loc_2ED2:24 ROM:00002D7C ; --------------------------------------------------------------------------- ROM:00002D7C ROM:00002D7C loc_2D7C: ; CODE XREF: interactionHandlerPokeBattle+DCj ROM:00002D7C ; interactionHandlerPokeBattle+10Aj ROM:00002D7C sub.b r0l, r0l ROM:00002D7E mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00002D7E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002D7E ; ItemScreenHandler: ROM:00002D7E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002D7E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002D7E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002D7E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002D7E ; 0x0010 - light grey pokeball ROM:00002D7E ; 0x0020 - tiny map icon ROM:00002D7E ; 0x0040 - found item #0 (slot nonempty) ROM:00002D7E ; 0x0080 - found item #1 (slot nonempty) ROM:00002D7E ; 0x0100 - found item #2 (slot nonempty) ROM:00002D7E ; 0x0200 - grey item icon ROM:00002D7E ; ItemRXed - what was RXed ROM:00002D7E ; 0 - event pokemon ROM:00002D7E ; 1 - special route ROM:00002D7E ; 2 - item ROM:00002D7E ; 3 - special ROM:00002D7E ; 4 - stamp: heart ROM:00002D7E ; 5 - stamp: spade ROM:00002D7E ; 6 - stamp: diamond ROM:00002D7E ; 7 - stamp: club ROM:00002D7E ; switch: ROM:00002D7E ; zero - pokemon does ROM:00002D7E ; nonzero - item needs to be switched ROM:00002D7E ; item RXed: ROM:00002D7E ; what sort of thing was RXed: item, map, route, etc ROM:00002D82 mov.b #0xE, r0l ROM:00002D84 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00002D88 mov.b #7, r0l ROM:00002D8A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002D8A ; battle: ROM:00002D8A ; 0 - battle opening animation ROM:00002D8A ; 1 - "XYZ appeared" message ROM:00002D8A ; 2 - "attack evade catch" directions shown ROM:00002D8A ; 3 - our action taken. details in gCurSubstateF ROM:00002D8A ; 4 - poke action taken. details in gCurSubstateF ROM:00002D8A ; 5 - "was too strong" ROM:00002D8A ; 6 - we lost ROM:00002D8A ; 7 - fled ROM:00002D8A ; 8 - staredown ROM:00002D8A ; 9 - almost had it ROM:00002D8A ; 10 - "threw a pokeball" ROM:00002D8A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002D8A ; 12, 14 - pokeball flying ROM:00002D8A ; 13 - pokeball flying ROM:00002D8A ; 15 - catch animation plays ROM:00002D8A ; 16 - caught! ROM:00002D8A ; switcht: ROM:00002D8A ; cur slected poke name ROM:00002D8E sub.b r0l, r0l ROM:00002D90 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002D90 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002D94 mov.b #0xA, r0l ROM:00002D96 jmp loc_3082:24 ROM:00002D9A ; --------------------------------------------------------------------------- ROM:00002D9A ROM:00002D9A case_0x04_: ; DATA XREF: ROM:0000BACEo ROM:00002D9A mov.b r6l, r0l ROM:00002D9C extu.w r0 ROM:00002D9E shll.w r0 ROM:00002DA0 mov.b @(byte_BB24,er0), r0l ROM:00002DA4 mov.b r0l, @gCurSubstateC:16 ROM:00002DA8 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00002DA8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002DAC extu.w r0 ROM:00002DAE shll.w r0 ROM:00002DB0 mov.b @(byte_BB25,er0), r0l ROM:00002DB4 mov.b r0l, @gCurSubstateD:16 ROM:00002DB8 jsr is_F7C4_nonzero:24 ROM:00002DBC mov.b r0l, r0l ROM:00002DBE bne case_0x02_:16 ROM:00002DC2 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00002DC2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002DC6 mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:00002DC6 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002DCA cmp.b r0h, r0l ROM:00002DCC bcs case_0x02_:16 ROM:00002DD0 mov.b #0x38, r0l ; '8' ROM:00002DD2 mov.b r0l, @gCurSubstateC:16 ROM:00002DD6 mov.b #8, r0l ROM:00002DD8 mov.b r0l, @gCurSubstateD:16 ROM:00002DDC mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002DDC ; battle: ROM:00002DDC ; bitfield [3..5]: battle action animation (our action) ROM:00002DDC ; 0 - attacked ROM:00002DDC ; 1 - evaded ROM:00002DDC ; 2 - critical hit ROM:00002DDC ; bitfield [1..2]: battle action animation (their action) ROM:00002DDC ; 0 - attacked ROM:00002DDC ; 1 - evaded ROM:00002DDC ; 2 - critical hit ROM:00002DE0 shlr.b r0l ROM:00002DE2 and.b #3, r0l ROM:00002DE4 beq loc_2DEE:8 ROM:00002DE6 cmp.b #1, r0l ROM:00002DE8 bne case_0x02_:16 ROM:00002DEC bra loc_2E42:8 ROM:00002DEE ; --------------------------------------------------------------------------- ROM:00002DEE ROM:00002DEE loc_2DEE: ; CODE XREF: interactionHandlerPokeBattle+182j ROM:00002DEE mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00002DEE ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002DEE ; ItemScreenHandler: ROM:00002DEE ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002DEE ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002DEE ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002DEE ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002DEE ; 0x0010 - light grey pokeball ROM:00002DEE ; 0x0020 - tiny map icon ROM:00002DEE ; 0x0040 - found item #0 (slot nonempty) ROM:00002DEE ; 0x0080 - found item #1 (slot nonempty) ROM:00002DEE ; 0x0100 - found item #2 (slot nonempty) ROM:00002DEE ; 0x0200 - grey item icon ROM:00002DEE ; ItemRXed - what was RXed ROM:00002DEE ; 0 - event pokemon ROM:00002DEE ; 1 - special route ROM:00002DEE ; 2 - item ROM:00002DEE ; 3 - special ROM:00002DEE ; 4 - stamp: heart ROM:00002DEE ; 5 - stamp: spade ROM:00002DEE ; 6 - stamp: diamond ROM:00002DEE ; 7 - stamp: club ROM:00002DEE ; switch: ROM:00002DEE ; zero - pokemon does ROM:00002DEE ; nonzero - item needs to be switched ROM:00002DEE ; item RXed: ROM:00002DEE ; what sort of thing was RXed: item, map, route, etc ROM:00002DF2 dec.b r0l ROM:00002DF4 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00002DF4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00002DF4 ; ItemScreenHandler: ROM:00002DF4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00002DF4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00002DF4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00002DF4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00002DF4 ; 0x0010 - light grey pokeball ROM:00002DF4 ; 0x0020 - tiny map icon ROM:00002DF4 ; 0x0040 - found item #0 (slot nonempty) ROM:00002DF4 ; 0x0080 - found item #1 (slot nonempty) ROM:00002DF4 ; 0x0100 - found item #2 (slot nonempty) ROM:00002DF4 ; 0x0200 - grey item icon ROM:00002DF4 ; ItemRXed - what was RXed ROM:00002DF4 ; 0 - event pokemon ROM:00002DF4 ; 1 - special route ROM:00002DF4 ; 2 - item ROM:00002DF4 ; 3 - special ROM:00002DF4 ; 4 - stamp: heart ROM:00002DF4 ; 5 - stamp: spade ROM:00002DF4 ; 6 - stamp: diamond ROM:00002DF4 ; 7 - stamp: club ROM:00002DF4 ; switch: ROM:00002DF4 ; zero - pokemon does ROM:00002DF4 ; nonzero - item needs to be switched ROM:00002DF4 ; item RXed: ROM:00002DF4 ; what sort of thing was RXed: item, map, route, etc ROM:00002DF8 beq loc_2E3C:8 ROM:00002DFA mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002DFA ; battle: ROM:00002DFA ; bitfield [3..5]: battle action animation (our action) ROM:00002DFA ; 0 - attacked ROM:00002DFA ; 1 - evaded ROM:00002DFA ; 2 - critical hit ROM:00002DFA ; bitfield [1..2]: battle action animation (their action) ROM:00002DFA ; 0 - attacked ROM:00002DFA ; 1 - evaded ROM:00002DFA ; 2 - critical hit ROM:00002DFE shlr.b r0l ROM:00002E00 shlr.b r0l ROM:00002E02 shlr.b r0l ROM:00002E04 and.b #3, r0l ROM:00002E06 beq loc_2E12:8 ROM:00002E08 cmp.b #1, r0l ROM:00002E0A beq loc_2E1C:8 ROM:00002E0C cmp.b #2, r0l ROM:00002E0E bne loc_2E32:8 ROM:00002E10 bra loc_2E26:8 ROM:00002E12 ; --------------------------------------------------------------------------- ROM:00002E12 ROM:00002E12 loc_2E12: ; CODE XREF: interactionHandlerPokeBattle+1A4j ROM:00002E12 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002E12 ; battle: ROM:00002E12 ; bitfield [3..5]: battle action animation (our action) ROM:00002E12 ; 0 - attacked ROM:00002E12 ; 1 - evaded ROM:00002E12 ; 2 - critical hit ROM:00002E12 ; bitfield [1..2]: battle action animation (their action) ROM:00002E12 ; 0 - attacked ROM:00002E12 ; 1 - evaded ROM:00002E12 ; 2 - critical hit ROM:00002E16 and.b #0x1F, r0l ROM:00002E18 or.b #0x20, r0l ROM:00002E1A bra loc_2E2E:8 ROM:00002E1C ; --------------------------------------------------------------------------- ROM:00002E1C ROM:00002E1C loc_2E1C: ; CODE XREF: interactionHandlerPokeBattle+1A8j ROM:00002E1C mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002E1C ; battle: ROM:00002E1C ; bitfield [3..5]: battle action animation (our action) ROM:00002E1C ; 0 - attacked ROM:00002E1C ; 1 - evaded ROM:00002E1C ; 2 - critical hit ROM:00002E1C ; bitfield [1..2]: battle action animation (their action) ROM:00002E1C ; 0 - attacked ROM:00002E1C ; 1 - evaded ROM:00002E1C ; 2 - critical hit ROM:00002E20 and.b #0x1F, r0l ROM:00002E22 or.b #0x60, r0l ROM:00002E24 bra loc_2E2E:8 ROM:00002E26 ; --------------------------------------------------------------------------- ROM:00002E26 ROM:00002E26 loc_2E26: ; CODE XREF: interactionHandlerPokeBattle+1AEj ROM:00002E26 mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002E26 ; battle: ROM:00002E26 ; bitfield [3..5]: battle action animation (our action) ROM:00002E26 ; 0 - attacked ROM:00002E26 ; 1 - evaded ROM:00002E26 ; 2 - critical hit ROM:00002E26 ; bitfield [1..2]: battle action animation (their action) ROM:00002E26 ; 0 - attacked ROM:00002E26 ; 1 - evaded ROM:00002E26 ; 2 - critical hit ROM:00002E2A and.b #0x1F, r0l ROM:00002E2C or.b #0x40, r0l ROM:00002E2E ROM:00002E2E loc_2E2E: ; CODE XREF: interactionHandlerPokeBattle+1B8j ROM:00002E2E ; interactionHandlerPokeBattle+1C2j ROM:00002E2E mov.b r0l, @gCurSubstateF:16 ; different per view ROM:00002E2E ; battle: ROM:00002E2E ; bitfield [3..5]: battle action animation (our action) ROM:00002E2E ; 0 - attacked ROM:00002E2E ; 1 - evaded ROM:00002E2E ; 2 - critical hit ROM:00002E2E ; bitfield [1..2]: battle action animation (their action) ROM:00002E2E ; 0 - attacked ROM:00002E2E ; 1 - evaded ROM:00002E2E ; 2 - critical hit ROM:00002E32 ROM:00002E32 loc_2E32: ; CODE XREF: interactionHandlerPokeBattle+76j ROM:00002E32 ; interactionHandlerPokeBattle+1ACj ROM:00002E32 mov.b #2, r0l ROM:00002E34 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002E34 ; battle: ROM:00002E34 ; 0 - battle opening animation ROM:00002E34 ; 1 - "XYZ appeared" message ROM:00002E34 ; 2 - "attack evade catch" directions shown ROM:00002E34 ; 3 - our action taken. details in gCurSubstateF ROM:00002E34 ; 4 - poke action taken. details in gCurSubstateF ROM:00002E34 ; 5 - "was too strong" ROM:00002E34 ; 6 - we lost ROM:00002E34 ; 7 - fled ROM:00002E34 ; 8 - staredown ROM:00002E34 ; 9 - almost had it ROM:00002E34 ; 10 - "threw a pokeball" ROM:00002E34 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002E34 ; 12, 14 - pokeball flying ROM:00002E34 ; 13 - pokeball flying ROM:00002E34 ; 15 - catch animation plays ROM:00002E34 ; 16 - caught! ROM:00002E34 ; switcht: ROM:00002E34 ; cur slected poke name ROM:00002E38 jmp case_0x02_:24 ROM:00002E3C ; --------------------------------------------------------------------------- ROM:00002E3C ROM:00002E3C loc_2E3C: ; CODE XREF: interactionHandlerPokeBattle+196j ROM:00002E3C mov.b #5, r0l ROM:00002E3E jmp loc_3076:24 ROM:00002E42 ; --------------------------------------------------------------------------- ROM:00002E42 ROM:00002E42 loc_2E42: ; CODE XREF: interactionHandlerPokeBattle+18Aj ROM:00002E42 mov.b #3, r0l ROM:00002E44 jmp loc_2ED2:24 ROM:00002E48 ; --------------------------------------------------------------------------- ROM:00002E48 ROM:00002E48 case_0x05_: ; DATA XREF: ROM:0000BAD0o ROM:00002E48 cmp.b r6h, r6l ROM:00002E4A bcs case_0x02_:16 ROM:00002E4E jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00002E52 mov.w e6, r0 ROM:00002E54 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002E58 mov.w r0, r6 ROM:00002E5A mov.w r0, e0 ROM:00002E5C mov.w e6, r1 ROM:00002E5E mov.w #0x8F00, r0 ROM:00002E62 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002E66 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00002E66 ; gifted items view: this is item number that has focus and arrow ROM:00002E66 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00002E66 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00002E66 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00002E6A cmp.b #4, r0l ROM:00002E6C bcc on_event_route:8 ROM:00002E6E push.w r0 ROM:00002E70 mov.w e5, r0 ROM:00002E72 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002E76 mov.w r0, e0 ROM:00002E78 mov.w r6, r0 ROM:00002E7A mov.w r5, e1 ROM:00002E7C mov.w #0x10, r1 ROM:00002E80 bra loc_2E94:8 ROM:00002E82 ; --------------------------------------------------------------------------- ROM:00002E82 ROM:00002E82 on_event_route: ; CODE XREF: interactionHandlerPokeBattle+20Aj ROM:00002E82 push.w r0 ROM:00002E84 mov.w e5, r0 ROM:00002E86 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002E8A mov.w r0, e0 ROM:00002E8C mov.w r6, r0 ROM:00002E8E mov.w r5, e1 ROM:00002E90 mov.w #0x110, r1 ROM:00002E94 ROM:00002E94 loc_2E94: ; CODE XREF: interactionHandlerPokeBattle+21Ej ROM:00002E94 jsr logEvent:24 ; ( ROM:00002E94 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00002E94 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00002E94 ; r1l = eventTYpe ROM:00002E94 ; r1h = boolean isOnSpecialEventRoute ROM:00002E94 ; e1 = extraInfo (eg: item type) ROM:00002E94 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00002E94 ; ) ROM:00002E98 adds #2, sp ROM:00002E9A mov.w @RamCache_curWatts:16, r6 ROM:00002E9E cmp.w #0xA, r6 ROM:00002EA2 bcc loc_2EAA:8 ROM:00002EA4 mov.w r6, @gCurSubstateE:16 ; ubstate for various modes ROM:00002EA4 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00002EA8 bra loc_2EB2:8 ROM:00002EAA ; --------------------------------------------------------------------------- ROM:00002EAA ROM:00002EAA loc_2EAA: ; CODE XREF: interactionHandlerPokeBattle+240j ROM:00002EAA mov.w #0xA, r0 ROM:00002EAE mov.w r0, @gCurSubstateE:16 ; ubstate for various modes ROM:00002EAE ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00002EB2 ROM:00002EB2 loc_2EB2: ; CODE XREF: interactionHandlerPokeBattle+246j ROM:00002EB2 mov.w @gCurSubstateE:16, r0 ; ubstate for various modes ROM:00002EB2 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00002EB6 mov.w r6, e0 ROM:00002EB8 sub.w r0, e0 ROM:00002EBA mov.w e0, @RamCache_curWatts:16 ROM:00002EBE mov.w #0x18, e1 ROM:00002EC2 mov.w #RamCache_totalSteps, r1 ROM:00002EC6 mov.l #0x2560156, er0 ROM:00002ECC jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00002ECC ; ROM:00002ECC ; see docs for readRedundantDataFromEeprom for format info ROM:00002ED0 mov.b #6, r0l ROM:00002ED2 ROM:00002ED2 loc_2ED2: ; CODE XREF: interactionHandlerPokeBattle+116j ROM:00002ED2 ; interactionHandlerPokeBattle+1E2j ROM:00002ED2 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002ED2 ; battle: ROM:00002ED2 ; 0 - battle opening animation ROM:00002ED2 ; 1 - "XYZ appeared" message ROM:00002ED2 ; 2 - "attack evade catch" directions shown ROM:00002ED2 ; 3 - our action taken. details in gCurSubstateF ROM:00002ED2 ; 4 - poke action taken. details in gCurSubstateF ROM:00002ED2 ; 5 - "was too strong" ROM:00002ED2 ; 6 - we lost ROM:00002ED2 ; 7 - fled ROM:00002ED2 ; 8 - staredown ROM:00002ED2 ; 9 - almost had it ROM:00002ED2 ; 10 - "threw a pokeball" ROM:00002ED2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002ED2 ; 12, 14 - pokeball flying ROM:00002ED2 ; 13 - pokeball flying ROM:00002ED2 ; 15 - catch animation plays ROM:00002ED2 ; 16 - caught! ROM:00002ED2 ; switcht: ROM:00002ED2 ; cur slected poke name ROM:00002ED6 sub.b r0l, r0l ROM:00002ED8 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002ED8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002EDC mov.b #8, r0l ROM:00002EDE jmp loc_3082:24 ROM:00002EE2 ; --------------------------------------------------------------------------- ROM:00002EE2 ROM:00002EE2 case_0x06_: ; DATA XREF: ROM:0000BAD2o ROM:00002EE2 mov.b #0xE, r0l ROM:00002EE4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00002EE4 ; // 0x02 - enter ROM:00002EE4 ; // 0x04 - left ROM:00002EE4 ; // 0x08 - right ROM:00002EE8 mov.b r0l, r0l ROM:00002EEA beq case_0x02_:16 ROM:00002EEE jmp loc_3064:24 ROM:00002EF2 ; --------------------------------------------------------------------------- ROM:00002EF2 ROM:00002EF2 case_0x08_: ; DATA XREF: ROM:0000BAD6o ROM:00002EF2 cmp.b r6h, r6l ROM:00002EF4 bcs case_0x02_:16 ROM:00002EF8 mov.b #2, r0l ROM:00002EFA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002EFA ; battle: ROM:00002EFA ; 0 - battle opening animation ROM:00002EFA ; 1 - "XYZ appeared" message ROM:00002EFA ; 2 - "attack evade catch" directions shown ROM:00002EFA ; 3 - our action taken. details in gCurSubstateF ROM:00002EFA ; 4 - poke action taken. details in gCurSubstateF ROM:00002EFA ; 5 - "was too strong" ROM:00002EFA ; 6 - we lost ROM:00002EFA ; 7 - fled ROM:00002EFA ; 8 - staredown ROM:00002EFA ; 9 - almost had it ROM:00002EFA ; 10 - "threw a pokeball" ROM:00002EFA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002EFA ; 12, 14 - pokeball flying ROM:00002EFA ; 13 - pokeball flying ROM:00002EFA ; 15 - catch animation plays ROM:00002EFA ; 16 - caught! ROM:00002EFA ; switcht: ROM:00002EFA ; cur slected poke name ROM:00002EFE mov.b @gCurSubstateF:16, r0l ; different per view ROM:00002EFE ; battle: ROM:00002EFE ; bitfield [3..5]: battle action animation (our action) ROM:00002EFE ; 0 - attacked ROM:00002EFE ; 1 - evaded ROM:00002EFE ; 2 - critical hit ROM:00002EFE ; bitfield [1..2]: battle action animation (their action) ROM:00002EFE ; 0 - attacked ROM:00002EFE ; 1 - evaded ROM:00002EFE ; 2 - critical hit ROM:00002F02 and.b #0x1F, r0l ROM:00002F04 or.b #0x80, r0l ROM:00002F06 ROM:00002F06 loc_2F06: ; CODE XREF: interactionHandlerPokeBattle+104j ROM:00002F06 mov.b r0l, @gCurSubstateF:16 ; different per view ROM:00002F06 ; battle: ROM:00002F06 ; bitfield [3..5]: battle action animation (our action) ROM:00002F06 ; 0 - attacked ROM:00002F06 ; 1 - evaded ROM:00002F06 ; 2 - critical hit ROM:00002F06 ; bitfield [1..2]: battle action animation (their action) ROM:00002F06 ; 0 - attacked ROM:00002F06 ; 1 - evaded ROM:00002F06 ; 2 - critical hit ROM:00002F0A jmp case_0x02_:24 ROM:00002F0E ; --------------------------------------------------------------------------- ROM:00002F0E ROM:00002F0E case_0x07_: ; DATA XREF: ROM:0000BAD4o ROM:00002F0E cmp.b #3, r6l ROM:00002F10 bhi loc_2F24:8 ROM:00002F12 mov.b r6l, r0l ROM:00002F14 extu.w r0 ROM:00002F16 mov.w #3, e0 ROM:00002F1A sub.w r0, e0 ROM:00002F1C mov.w e0, r0 ROM:00002F1E mov.b @(byte_BB0E,er0), r0l ROM:00002F22 bra loc_2F26:8 ROM:00002F24 ; --------------------------------------------------------------------------- ROM:00002F24 ROM:00002F24 loc_2F24: ; CODE XREF: interactionHandlerPokeBattle+2AEj ROM:00002F24 mov.b #0xE0, r0l ; 'a' ROM:00002F26 ROM:00002F26 loc_2F26: ; CODE XREF: interactionHandlerPokeBattle+2C0j ROM:00002F26 mov.b r0l, @gCurSubstateD:16 ROM:00002F2A mov.b #0xE, r0l ROM:00002F2C jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00002F2C ; // 0x02 - enter ROM:00002F2C ; // 0x04 - left ROM:00002F2C ; // 0x08 - right ROM:00002F30 mov.b r0l, r0l ROM:00002F32 beq case_0x02_:16 ROM:00002F36 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00002F3A mov.w e6, r0 ROM:00002F3C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002F40 mov.w r0, r6 ROM:00002F42 mov.w r0, e0 ROM:00002F44 mov.w e6, r1 ROM:00002F46 mov.w #0x8F00, r0 ROM:00002F4A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00002F4E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00002F4E ; gifted items view: this is item number that has focus and arrow ROM:00002F4E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00002F4E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00002F4E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00002F52 cmp.b #4, r0l ROM:00002F54 bcc on_event_route_:8 ROM:00002F56 push.w r0 ROM:00002F58 mov.w e5, r0 ROM:00002F5A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002F5E mov.w r0, e0 ROM:00002F60 mov.w r6, r0 ROM:00002F62 mov.w r5, e1 ROM:00002F64 mov.w #0xF, r1 ROM:00002F68 bra loc_2F7C:8 ROM:00002F6A ; --------------------------------------------------------------------------- ROM:00002F6A ROM:00002F6A on_event_route_: ; CODE XREF: interactionHandlerPokeBattle+2F2j ROM:00002F6A push.w r0 ROM:00002F6C mov.w e5, r0 ROM:00002F6E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00002F72 mov.w r0, e0 ROM:00002F74 mov.w r6, r0 ROM:00002F76 mov.w r5, e1 ROM:00002F78 mov.w #0x10F, r1 ROM:00002F7C ROM:00002F7C loc_2F7C: ; CODE XREF: interactionHandlerPokeBattle+306j ROM:00002F7C jsr logEvent:24 ; ( ROM:00002F7C ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00002F7C ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00002F7C ; r1l = eventTYpe ROM:00002F7C ; r1h = boolean isOnSpecialEventRoute ROM:00002F7C ; e1 = extraInfo (eg: item type) ROM:00002F7C ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00002F7C ; ) ROM:00002F80 adds #2, sp ROM:00002F82 mov.b #4, r0l ROM:00002F84 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00002F88 jmp loc_3064:24 ROM:00002F8C ; --------------------------------------------------------------------------- ROM:00002F8C ROM:00002F8C case_0x0a_: ; DATA XREF: ROM:0000BADAo ROM:00002F8C cmp.b r6h, r6l ROM:00002F8E bcs case_0x02_:16 ROM:00002F92 mov.w #gCurSubstateF, r0 ; different per view ROM:00002F92 ; battle: ROM:00002F92 ; bitfield [3..5]: battle action animation (our action) ROM:00002F92 ; 0 - attacked ROM:00002F92 ; 1 - evaded ROM:00002F92 ; 2 - critical hit ROM:00002F92 ; bitfield [1..2]: battle action animation (their action) ROM:00002F92 ; 0 - attacked ROM:00002F92 ; 1 - evaded ROM:00002F92 ; 2 - critical hit ROM:00002F96 bclr #0, @er0 ROM:00002F9A mov.b #0xB, r0l ROM:00002F9C mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002F9C ; battle: ROM:00002F9C ; 0 - battle opening animation ROM:00002F9C ; 1 - "XYZ appeared" message ROM:00002F9C ; 2 - "attack evade catch" directions shown ROM:00002F9C ; 3 - our action taken. details in gCurSubstateF ROM:00002F9C ; 4 - poke action taken. details in gCurSubstateF ROM:00002F9C ; 5 - "was too strong" ROM:00002F9C ; 6 - we lost ROM:00002F9C ; 7 - fled ROM:00002F9C ; 8 - staredown ROM:00002F9C ; 9 - almost had it ROM:00002F9C ; 10 - "threw a pokeball" ROM:00002F9C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002F9C ; 12, 14 - pokeball flying ROM:00002F9C ; 13 - pokeball flying ROM:00002F9C ; 15 - catch animation plays ROM:00002F9C ; 16 - caught! ROM:00002F9C ; switcht: ROM:00002F9C ; cur slected poke name ROM:00002FA0 sub.b r0l, r0l ROM:00002FA2 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002FA2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002FA6 mov.b #2, r0l ROM:00002FA8 jmp loc_3082:24 ROM:00002FAC ; --------------------------------------------------------------------------- ROM:00002FAC ROM:00002FAC case_0x0b_: ; DATA XREF: ROM:0000BADCo ROM:00002FAC cmp.b r6h, r6l ROM:00002FAE bcs case_0x02_:16 ROM:00002FB2 mov.b #0xC, r0l ROM:00002FB4 ROM:00002FB4 loc_2FB4: ; CODE XREF: interactionHandlerPokeBattle+3Aj ROM:00002FB4 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002FB4 ; battle: ROM:00002FB4 ; 0 - battle opening animation ROM:00002FB4 ; 1 - "XYZ appeared" message ROM:00002FB4 ; 2 - "attack evade catch" directions shown ROM:00002FB4 ; 3 - our action taken. details in gCurSubstateF ROM:00002FB4 ; 4 - poke action taken. details in gCurSubstateF ROM:00002FB4 ; 5 - "was too strong" ROM:00002FB4 ; 6 - we lost ROM:00002FB4 ; 7 - fled ROM:00002FB4 ; 8 - staredown ROM:00002FB4 ; 9 - almost had it ROM:00002FB4 ; 10 - "threw a pokeball" ROM:00002FB4 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002FB4 ; 12, 14 - pokeball flying ROM:00002FB4 ; 13 - pokeball flying ROM:00002FB4 ; 15 - catch animation plays ROM:00002FB4 ; 16 - caught! ROM:00002FB4 ; switcht: ROM:00002FB4 ; cur slected poke name ROM:00002FB8 sub.b r0l, r0l ROM:00002FBA mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002FBA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002FBE mov.b #3, r0l ROM:00002FC0 jmp loc_3082:24 ROM:00002FC4 ; --------------------------------------------------------------------------- ROM:00002FC4 ROM:00002FC4 case_0x0c_: ; DATA XREF: ROM:0000BADEo ROM:00002FC4 cmp.b r6h, r6l ROM:00002FC6 bcs case_0x02_:16 ROM:00002FCA bra loc_3008:8 ROM:00002FCC ; --------------------------------------------------------------------------- ROM:00002FCC ROM:00002FCC case_0x0d_: ; DATA XREF: ROM:0000BAE0o ROM:00002FCC cmp.b r6h, r6l ROM:00002FCE bcs case_0x02_:16 ROM:00002FD2 jsr sub_2C32:24 ROM:00002FD6 mov.b r0l, r0l ROM:00002FD8 beq loc_2FE8:8 ROM:00002FDA mov.b @gCurSubstateF+1:16, r0l ; different per view ROM:00002FDA ; battle: ROM:00002FDA ; bitfield [3..5]: battle action animation (our action) ROM:00002FDA ; 0 - attacked ROM:00002FDA ; 1 - evaded ROM:00002FDA ; 2 - critical hit ROM:00002FDA ; bitfield [1..2]: battle action animation (their action) ROM:00002FDA ; 0 - attacked ROM:00002FDA ; 1 - evaded ROM:00002FDA ; 2 - critical hit ROM:00002FDE inc.b r0l ROM:00002FE0 mov.b r0l, @gCurSubstateF+1:16 ; different per view ROM:00002FE0 ; battle: ROM:00002FE0 ; bitfield [3..5]: battle action animation (our action) ROM:00002FE0 ; 0 - attacked ROM:00002FE0 ; 1 - evaded ROM:00002FE0 ; 2 - critical hit ROM:00002FE0 ; bitfield [1..2]: battle action animation (their action) ROM:00002FE0 ; 0 - attacked ROM:00002FE0 ; 1 - evaded ROM:00002FE0 ; 2 - critical hit ROM:00002FE4 mov.b #0xE, r0l ROM:00002FE6 bra loc_300A:8 ROM:00002FE8 ; --------------------------------------------------------------------------- ROM:00002FE8 ROM:00002FE8 loc_2FE8: ; CODE XREF: interactionHandlerPokeBattle+376j ROM:00002FE8 mov.b #0x11, r0l ROM:00002FEA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00002FEA ; battle: ROM:00002FEA ; 0 - battle opening animation ROM:00002FEA ; 1 - "XYZ appeared" message ROM:00002FEA ; 2 - "attack evade catch" directions shown ROM:00002FEA ; 3 - our action taken. details in gCurSubstateF ROM:00002FEA ; 4 - poke action taken. details in gCurSubstateF ROM:00002FEA ; 5 - "was too strong" ROM:00002FEA ; 6 - we lost ROM:00002FEA ; 7 - fled ROM:00002FEA ; 8 - staredown ROM:00002FEA ; 9 - almost had it ROM:00002FEA ; 10 - "threw a pokeball" ROM:00002FEA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00002FEA ; 12, 14 - pokeball flying ROM:00002FEA ; 13 - pokeball flying ROM:00002FEA ; 15 - catch animation plays ROM:00002FEA ; 16 - caught! ROM:00002FEA ; switcht: ROM:00002FEA ; cur slected poke name ROM:00002FEE sub.b r0l, r0l ROM:00002FF0 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00002FF0 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00002FF4 mov.b #1, r0l ROM:00002FF6 jmp loc_3082:24 ROM:00002FFA ; --------------------------------------------------------------------------- ROM:00002FFA ROM:00002FFA case_0x0e_: ; DATA XREF: ROM:0000BAE2o ROM:00002FFA cmp.b r6h, r6l ROM:00002FFC bcs case_0x02_:16 ROM:00003000 mov.b @gCurSubstateF+1:16, r0l ; different per view ROM:00003000 ; battle: ROM:00003000 ; bitfield [3..5]: battle action animation (our action) ROM:00003000 ; 0 - attacked ROM:00003000 ; 1 - evaded ROM:00003000 ; 2 - critical hit ROM:00003000 ; bitfield [1..2]: battle action animation (their action) ROM:00003000 ; 0 - attacked ROM:00003000 ; 1 - evaded ROM:00003000 ; 2 - critical hit ROM:00003004 cmp.b #3, r0l ROM:00003006 bcc loc_3018:8 ROM:00003008 ROM:00003008 loc_3008: ; CODE XREF: interactionHandlerPokeBattle+368j ROM:00003008 mov.b #0xD, r0l ROM:0000300A ROM:0000300A loc_300A: ; CODE XREF: interactionHandlerPokeBattle+384j ROM:0000300A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000300A ; battle: ROM:0000300A ; 0 - battle opening animation ROM:0000300A ; 1 - "XYZ appeared" message ROM:0000300A ; 2 - "attack evade catch" directions shown ROM:0000300A ; 3 - our action taken. details in gCurSubstateF ROM:0000300A ; 4 - poke action taken. details in gCurSubstateF ROM:0000300A ; 5 - "was too strong" ROM:0000300A ; 6 - we lost ROM:0000300A ; 7 - fled ROM:0000300A ; 8 - staredown ROM:0000300A ; 9 - almost had it ROM:0000300A ; 10 - "threw a pokeball" ROM:0000300A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000300A ; 12, 14 - pokeball flying ROM:0000300A ; 13 - pokeball flying ROM:0000300A ; 15 - catch animation plays ROM:0000300A ; 16 - caught! ROM:0000300A ; switcht: ROM:0000300A ; cur slected poke name ROM:0000300E sub.b r0l, r0l ROM:00003010 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00003010 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003014 mov.b #4, r0l ROM:00003016 bra loc_3082:8 ROM:00003018 ; --------------------------------------------------------------------------- ROM:00003018 ROM:00003018 loc_3018: ; CODE XREF: interactionHandlerPokeBattle+3A4j ROM:00003018 mov.b #0xF, r0l ROM:0000301A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000301A ; battle: ROM:0000301A ; 0 - battle opening animation ROM:0000301A ; 1 - "XYZ appeared" message ROM:0000301A ; 2 - "attack evade catch" directions shown ROM:0000301A ; 3 - our action taken. details in gCurSubstateF ROM:0000301A ; 4 - poke action taken. details in gCurSubstateF ROM:0000301A ; 5 - "was too strong" ROM:0000301A ; 6 - we lost ROM:0000301A ; 7 - fled ROM:0000301A ; 8 - staredown ROM:0000301A ; 9 - almost had it ROM:0000301A ; 10 - "threw a pokeball" ROM:0000301A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000301A ; 12, 14 - pokeball flying ROM:0000301A ; 13 - pokeball flying ROM:0000301A ; 15 - catch animation plays ROM:0000301A ; 16 - caught! ROM:0000301A ; switcht: ROM:0000301A ; cur slected poke name ROM:0000301E sub.b r0l, r0l ROM:00003020 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00003020 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003024 mov.b #6, r0h ROM:00003026 mov.b r0h, @gCurSubstateB+1:16 ; Substate: ROM:00003026 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000302A bra loc_3044:8 ROM:0000302C ; --------------------------------------------------------------------------- ROM:0000302C ROM:0000302C case_0x0f_: ; DATA XREF: ROM:0000BAE4o ROM:0000302C cmp.b r6h, r6l ROM:0000302E bcs case_0x02_:8 ROM:00003030 mov.b #0x10, r0l ROM:00003032 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003032 ; battle: ROM:00003032 ; 0 - battle opening animation ROM:00003032 ; 1 - "XYZ appeared" message ROM:00003032 ; 2 - "attack evade catch" directions shown ROM:00003032 ; 3 - our action taken. details in gCurSubstateF ROM:00003032 ; 4 - poke action taken. details in gCurSubstateF ROM:00003032 ; 5 - "was too strong" ROM:00003032 ; 6 - we lost ROM:00003032 ; 7 - fled ROM:00003032 ; 8 - staredown ROM:00003032 ; 9 - almost had it ROM:00003032 ; 10 - "threw a pokeball" ROM:00003032 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003032 ; 12, 14 - pokeball flying ROM:00003032 ; 13 - pokeball flying ROM:00003032 ; 15 - catch animation plays ROM:00003032 ; 16 - caught! ROM:00003032 ; switcht: ROM:00003032 ; cur slected poke name ROM:00003036 sub.b r0l, r0l ROM:00003038 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00003038 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000303C mov.b #6, r0l ROM:0000303E mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000303E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003042 mov.b #7, r0l ROM:00003044 ROM:00003044 loc_3044: ; CODE XREF: interactionHandlerPokeBattle+3C8j ROM:00003044 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003048 bra case_0x02_:8 ROM:0000304A ; --------------------------------------------------------------------------- ROM:0000304A ROM:0000304A case_0x10_: ; DATA XREF: ROM:0000BAE6o ROM:0000304A cmp.b r6h, r6l ROM:0000304C bcs case_0x02_:8 ROM:0000304E mov.b #0xE, r0l ROM:00003050 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00003050 ; // 0x02 - enter ROM:00003050 ; // 0x04 - left ROM:00003050 ; // 0x08 - right ROM:00003054 mov.b r0l, r0l ROM:00003056 beq case_0x02_:8 ROM:00003058 jsr recordPokeCaughtNormal:24 ; (void) //gCurSubstateY has poke index on route OR somethign else... 1..3 is poke on route, 4 is event poke ROM:0000305C mov.b @currentlyActiveView:16, r0l ROM:00003060 cmp.b #4, r0l ROM:00003062 bne case_0x02_:8 ROM:00003064 ROM:00003064 loc_3064: ; CODE XREF: interactionHandlerPokeBattle+28Cj ROM:00003064 ; interactionHandlerPokeBattle+326j ROM:00003064 jsr someStateVarShuffling:24 ROM:00003068 sub.b r0l, r0l ROM:0000306A jsr setCurrentlyActiveView:24 ROM:0000306E bra case_0x02_:8 ROM:00003070 ; --------------------------------------------------------------------------- ROM:00003070 ROM:00003070 case_0x11_: ; DATA XREF: ROM:0000BAE8o ROM:00003070 cmp.b r6h, r6l ROM:00003072 bcs case_0x02_:8 ROM:00003074 mov.b #9, r0l ROM:00003076 ROM:00003076 loc_3076: ; CODE XREF: interactionHandlerPokeBattle+1DCj ROM:00003076 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003076 ; battle: ROM:00003076 ; 0 - battle opening animation ROM:00003076 ; 1 - "XYZ appeared" message ROM:00003076 ; 2 - "attack evade catch" directions shown ROM:00003076 ; 3 - our action taken. details in gCurSubstateF ROM:00003076 ; 4 - poke action taken. details in gCurSubstateF ROM:00003076 ; 5 - "was too strong" ROM:00003076 ; 6 - we lost ROM:00003076 ; 7 - fled ROM:00003076 ; 8 - staredown ROM:00003076 ; 9 - almost had it ROM:00003076 ; 10 - "threw a pokeball" ROM:00003076 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003076 ; 12, 14 - pokeball flying ROM:00003076 ; 13 - pokeball flying ROM:00003076 ; 15 - catch animation plays ROM:00003076 ; 16 - caught! ROM:00003076 ; switcht: ROM:00003076 ; cur slected poke name ROM:0000307A sub.b r0l, r0l ROM:0000307C mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:0000307C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003080 mov.b #6, r0l ROM:00003082 ROM:00003082 loc_3082: ; CODE XREF: interactionHandlerPokeBattle+134j ROM:00003082 ; interactionHandlerPokeBattle+27Cj ... ROM:00003082 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:00003082 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003086 bra case_0x02_:8 ROM:00003088 ; --------------------------------------------------------------------------- ROM:00003088 ROM:00003088 case_0x09_: ; DATA XREF: ROM:0000BAD8o ROM:00003088 cmp.b r6h, r6l ROM:0000308A bcs case_0x02_:8 ROM:0000308C mov.b #0xE, r0l ROM:0000308E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003092 mov.b #7, r0l ROM:00003094 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003094 ; battle: ROM:00003094 ; 0 - battle opening animation ROM:00003094 ; 1 - "XYZ appeared" message ROM:00003094 ; 2 - "attack evade catch" directions shown ROM:00003094 ; 3 - our action taken. details in gCurSubstateF ROM:00003094 ; 4 - poke action taken. details in gCurSubstateF ROM:00003094 ; 5 - "was too strong" ROM:00003094 ; 6 - we lost ROM:00003094 ; 7 - fled ROM:00003094 ; 8 - staredown ROM:00003094 ; 9 - almost had it ROM:00003094 ; 10 - "threw a pokeball" ROM:00003094 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003094 ; 12, 14 - pokeball flying ROM:00003094 ; 13 - pokeball flying ROM:00003094 ; 15 - catch animation plays ROM:00003094 ; 16 - caught! ROM:00003094 ; switcht: ROM:00003094 ; cur slected poke name ROM:00003098 sub.b r0l, r0l ROM:0000309A mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:0000309A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000309E mov.b #0xA, r0l ROM:000030A0 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:000030A0 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000030A4 ROM:000030A4 case_0x02_: ; CODE XREF: interactionHandlerPokeBattle+16j ROM:000030A4 ; interactionHandlerPokeBattle+24j ... ROM:000030A4 rts ROM:000030A4 ; End of function interactionHandlerPokeBattle ROM:000030A4 ROM:000030A6 ROM:000030A6 ; =============== S U B R O U T I N E ======================================= ROM:000030A6 ROM:000030A6 ROM:000030A6 battleScreenDraw: ; CODE XREF: maybe_viewDoDisplay:case__0x04p ROM:000030A6 val_0x10 = e6 ROM:000030A6 val_0x280 = r5 ROM:000030A6 mov.w #0xC0, e5 ; '+' ROM:000030AA mov.w #eepromReadToRamAlso, r3 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000030AE mov.w #drawImageToScreen, r4 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000030B2 mov.w #0x10, val_0x10 ROM:000030B6 mov.w #0x280, val_0x280 ROM:000030BA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000030BE mov.w #0x300, r0 ROM:000030C2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000030C6 mov.w r0, r6 ROM:000030C8 mov.w #0x18, r0 ROM:000030CC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000030D0 mov.w r0, e3 ROM:000030D2 mov.w #8, r0 ROM:000030D6 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000030DA mov.w r0, e2 ROM:000030DC mov.b @curUiFlags:16, r0l ; bits: ROM:000030DC ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000030DC ; 0x02 - slower animation frame ROM:000030E0 and.b #1, r0l ROM:000030E2 mov.b #0xC0, r0h ; '+' ROM:000030E4 mulxu.b r0h, r0 ROM:000030E6 add.w #0x91BE, r0 ; current pokemon animated sprite for 32 x 24 x 2 frames ROM:000030EA mov.w e5, r1 ROM:000030EC mov.w r6, e0 ROM:000030EE jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000030F0 mov.w r6, e0 ROM:000030F2 mov.w #0x1820, r1 ROM:000030F6 mov.b #8, r0h ROM:000030F8 mov.b @gCurSubstateC:16, r0l ROM:000030FC jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000030FE mov.w #0x1DB0, e4 ROM:00003102 add.w val_0x280, e4 ROM:00003104 mov.w e4, r0 ROM:00003106 mov.w val_0x10, r1 ROM:00003108 mov.w r6, e0 ROM:0000310A jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000310C sub.b r0l, r0l ROM:0000310E bra loc_3124:8 ROM:00003110 ; --------------------------------------------------------------------------- ROM:00003110 ROM:00003110 loc_3110: ; CODE XREF: battleScreenDraw+86j ROM:00003110 mov.b #8, r0h ROM:00003112 mulxu.b r0h, r0 ROM:00003114 add.b #0x38, r0l ; '8' ROM:00003116 mov.w r6, e0 ROM:00003118 mov.b #8, r1h ROM:0000311A mov.b r1h, r1l ROM:0000311C sub.b r0h, r0h ROM:0000311E jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003120 mov.b r2l, r0l ROM:00003122 inc.b r0l ROM:00003124 ROM:00003124 loc_3124: ; CODE XREF: battleScreenDraw+68j ROM:00003124 mov.b r0l, r2l ROM:00003126 mov.b @gCurSubstateA:16, r0h ; Substate for various modes ROM:00003126 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003126 ; ItemScreenHandler: ROM:00003126 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003126 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003126 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003126 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003126 ; 0x0010 - light grey pokeball ROM:00003126 ; 0x0020 - tiny map icon ROM:00003126 ; 0x0040 - found item #0 (slot nonempty) ROM:00003126 ; 0x0080 - found item #1 (slot nonempty) ROM:00003126 ; 0x0100 - found item #2 (slot nonempty) ROM:00003126 ; 0x0200 - grey item icon ROM:00003126 ; ItemRXed - what was RXed ROM:00003126 ; 0 - event pokemon ROM:00003126 ; 1 - special route ROM:00003126 ; 2 - item ROM:00003126 ; 3 - special ROM:00003126 ; 4 - stamp: heart ROM:00003126 ; 5 - stamp: spade ROM:00003126 ; 6 - stamp: diamond ROM:00003126 ; 7 - stamp: club ROM:00003126 ; switch: ROM:00003126 ; zero - pokemon does ROM:00003126 ; nonzero - item needs to be switched ROM:00003126 ; item RXed: ROM:00003126 ; what sort of thing was RXed: item, map, route, etc ROM:0000312A cmp.b r0h, r0l ROM:0000312C bcs loc_3110:8 ROM:0000312E mov.b @gCurSubstateF:16, r0l ; different per view ROM:0000312E ; battle: ROM:0000312E ; bitfield [3..5]: battle action animation (our action) ROM:0000312E ; 0 - attacked ROM:0000312E ; 1 - evaded ROM:0000312E ; 2 - critical hit ROM:0000312E ; bitfield [1..2]: battle action animation (their action) ROM:0000312E ; 0 - attacked ROM:0000312E ; 1 - evaded ROM:0000312E ; 2 - critical hit ROM:00003132 bld #0, r0l ROM:00003134 bcc loc_3158:8 ROM:00003136 sub.b r0l, r0l ROM:00003138 bra loc_314E:8 ROM:0000313A ; --------------------------------------------------------------------------- ROM:0000313A ROM:0000313A loc_313A: ; CODE XREF: battleScreenDraw+B0j ROM:0000313A mov.b #8, r0h ROM:0000313C mulxu.b r0h, r0 ROM:0000313E add.b #8, r0l ROM:00003140 mov.w r6, e0 ROM:00003142 mov.b #8, r1h ROM:00003144 mov.b r1h, r1l ROM:00003146 mov.b #0x18, r0h ROM:00003148 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000314A mov.b r2l, r0l ROM:0000314C inc.b r0l ROM:0000314E ROM:0000314E loc_314E: ; CODE XREF: battleScreenDraw+92j ROM:0000314E mov.b r0l, r2l ROM:00003150 mov.b @gCurSubstateA+1:16, r0h ; Substate for various modes ROM:00003150 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003150 ; ItemScreenHandler: ROM:00003150 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003150 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003150 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003150 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003150 ; 0x0010 - light grey pokeball ROM:00003150 ; 0x0020 - tiny map icon ROM:00003150 ; 0x0040 - found item #0 (slot nonempty) ROM:00003150 ; 0x0080 - found item #1 (slot nonempty) ROM:00003150 ; 0x0100 - found item #2 (slot nonempty) ROM:00003150 ; 0x0200 - grey item icon ROM:00003150 ; ItemRXed - what was RXed ROM:00003150 ; 0 - event pokemon ROM:00003150 ; 1 - special route ROM:00003150 ; 2 - item ROM:00003150 ; 3 - special ROM:00003150 ; 4 - stamp: heart ROM:00003150 ; 5 - stamp: spade ROM:00003150 ; 6 - stamp: diamond ROM:00003150 ; 7 - stamp: club ROM:00003150 ; switch: ROM:00003150 ; zero - pokemon does ROM:00003150 ; nonzero - item needs to be switched ROM:00003150 ; item RXed: ROM:00003150 ; what sort of thing was RXed: item, map, route, etc ROM:00003154 cmp.b r0h, r0l ROM:00003156 bcs loc_313A:8 ROM:00003158 ROM:00003158 loc_3158: ; CODE XREF: battleScreenDraw+8Ej ROM:00003158 mov.b @gCurSubstateY:16, r2l ; Substate: ROM:00003158 ; gifted items view: this is item number that has focus and arrow ROM:00003158 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003158 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003158 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000315C mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000315C ; battle: ROM:0000315C ; 0 - battle opening animation ROM:0000315C ; 1 - "XYZ appeared" message ROM:0000315C ; 2 - "attack evade catch" directions shown ROM:0000315C ; 3 - our action taken. details in gCurSubstateF ROM:0000315C ; 4 - poke action taken. details in gCurSubstateF ROM:0000315C ; 5 - "was too strong" ROM:0000315C ; 6 - we lost ROM:0000315C ; 7 - fled ROM:0000315C ; 8 - staredown ROM:0000315C ; 9 - almost had it ROM:0000315C ; 10 - "threw a pokeball" ROM:0000315C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000315C ; 12, 14 - pokeball flying ROM:0000315C ; 13 - pokeball flying ROM:0000315C ; 15 - catch animation plays ROM:0000315C ; 16 - caught! ROM:0000315C ; switcht: ROM:0000315C ; cur slected poke name ROM:00003160 cmp.b #0xA, r0l ROM:00003162 bhi loc_3280:16 ROM:00003166 mov.b r2l, r0l ROM:00003168 cmp.b #4, r0l ROM:0000316A bcc is_event_poke:8 ROM:0000316C ROM:0000316C is_normal_wild_poke: ROM:0000316C extu.w r0 ROM:0000316E dec.w #1, r0 ROM:00003170 mov.w #0x10, e0 ROM:00003174 mulxu.w e0, er0 ROM:00003176 add.w #0x8F52, r0 ; read wild poke data ROM:0000317A mov.w val_0x10, r1 ROM:0000317C mov.w r6, e0 ROM:0000317E jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003180 sub.b r0l, r0l ROM:00003182 mov.b @(0xE:16,er6), r0h ; the byte at 0x0e ROM:00003186 bld #0, r0h ROM:00003188 bst #0, r0l ROM:0000318A mov.b r0l, r2l ROM:0000318C mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000318C ; gifted items view: this is item number that has focus and arrow ROM:0000318C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000318C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000318C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003190 extu.w r0 ROM:00003192 dec.w #1, r0 ROM:00003194 mov.w #0x180, e0 ROM:00003198 mulxu.w e0, er0 ROM:0000319A mov.b @curUiFlags:16, r1l ; bits: ROM:0000319A ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000319A ; 0x02 - slower animation frame ROM:0000319E and.b #1, r1l ROM:000031A0 mov.b #0xC0, r1h ; '+' ; animation frame ROM:000031A2 mulxu.b r1h, r1 ROM:000031A4 add.w r1, r0 ROM:000031A6 add.w #0x9A7E, r0 ; poke animated sprite ROM:000031AA bra loc_31D0:8 ROM:000031AC ; --------------------------------------------------------------------------- ROM:000031AC ROM:000031AC is_event_poke: ; CODE XREF: battleScreenDraw+C4j ROM:000031AC mov.w #0xBF08, r0 ROM:000031B0 mov.w val_0x10, r1 ROM:000031B2 mov.w r6, e0 ROM:000031B4 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000031B6 sub.b r0l, r0l ROM:000031B8 mov.b @(0xE:16,er6), r0h ROM:000031BC bld #0, r0h ROM:000031BE bst #0, r0l ROM:000031C0 mov.b r0l, r2l ROM:000031C2 mov.b @curUiFlags:16, r0l ; bits: ROM:000031C2 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000031C2 ; 0x02 - slower animation frame ROM:000031C6 and.b #1, r0l ROM:000031C8 mov.b #0xC0, r0h ; '+' ROM:000031CA mulxu.b r0h, r0 ROM:000031CC add.w #0xBF7C, r0 ROM:000031D0 ROM:000031D0 loc_31D0: ; CODE XREF: battleScreenDraw+104j ROM:000031D0 mov.w r0, e4 ROM:000031D2 mov.w #0x180, r1 ROM:000031D6 mov.w r6, e0 ROM:000031D8 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000031DA mov.b r2l, r0l ; this is wild poke struct byte 14 bit 0 ROM:000031DC bne loc_31E8:8 ROM:000031DE mov.w r6, e0 ROM:000031E0 mov.w #0x1820, r0 ROM:000031E4 jsr imageFlipHorizontal:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = imageData) ///height must be multiple of 8 ROM:000031E8 ROM:000031E8 loc_31E8: ; CODE XREF: battleScreenDraw+136j ROM:000031E8 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000031E8 ; battle: ROM:000031E8 ; 0 - battle opening animation ROM:000031E8 ; 1 - "XYZ appeared" message ROM:000031E8 ; 2 - "attack evade catch" directions shown ROM:000031E8 ; 3 - our action taken. details in gCurSubstateF ROM:000031E8 ; 4 - poke action taken. details in gCurSubstateF ROM:000031E8 ; 5 - "was too strong" ROM:000031E8 ; 6 - we lost ROM:000031E8 ; 7 - fled ROM:000031E8 ; 8 - staredown ROM:000031E8 ; 9 - almost had it ROM:000031E8 ; 10 - "threw a pokeball" ROM:000031E8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000031E8 ; 12, 14 - pokeball flying ROM:000031E8 ; 13 - pokeball flying ROM:000031E8 ; 15 - catch animation plays ROM:000031E8 ; 16 - caught! ROM:000031E8 ; switcht: ROM:000031E8 ; cur slected poke name ROM:000031EC cmp.b #0xA, r0l ROM:000031EE beq loc_3206:8 ROM:000031F0 mov.w r6, e1 ROM:000031F2 mov.w #0x18, r1 ROM:000031F6 mov.w #0x20, e0 ; ' ' ROM:000031FA sub.b r0h, r0h ROM:000031FC mov.b @gCurSubstateD:16, r0l ROM:00003200 jsr drawImageInSomeWeirdWay:24 ; (r0l = x, r0h = y, e0 = imgWidth, r1 = imgHeight, e1 = imgData) ROM:00003204 bra loc_3280:8 ROM:00003206 ; --------------------------------------------------------------------------- ROM:00003206 ROM:00003206 loc_3206: ; CODE XREF: battleScreenDraw+148j ROM:00003206 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00003206 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000320A shll.b r0l ROM:0000320C shll.b r0l ROM:0000320E mov.b #0x2C, r0h ; ',' ROM:00003210 sub.b r0l, r0h ROM:00003212 mov.b r0h, r2l ROM:00003214 extu.w r0 ROM:00003216 shll.w r0 ROM:00003218 mov.w @(POKEBALL_THROW_ARC_Y,er0), r0 ROM:0000321C shll.w r0 ROM:0000321E mov.b r0h, r0l ROM:00003220 subx r0h, r0h ROM:00003222 mov.b #0x14, r0h ROM:00003224 sub.b r0l, r0h ROM:00003226 mov.b r0h, r2h ROM:00003228 mov.w #0x1E0, r0 ; 0x460 = pokeball 8x8 ROM:0000322C add.w val_0x280, r0 ROM:0000322E mov.w val_0x10, r1 ROM:00003230 mov.w e3, e0 ROM:00003232 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003234 mov.w #0x200, r0 ROM:00003238 add.w val_0x280, r0 ; 0x480 = pokeball light grey 8x8 ROM:0000323A mov.w #8, r1 ROM:0000323E mov.w e2, e0 ROM:00003240 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003242 mov.w e3, e0 ROM:00003244 mov.b #8, r1h ROM:00003246 mov.b r1h, r1l ROM:00003248 mov.w r2, r0 ROM:0000324A jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000324C mov.b #8, r0l ROM:0000324E push.w r0 ROM:00003250 push.w r0 ROM:00003252 mov.b r2h, r0l ROM:00003254 push.w r0 ROM:00003256 mov.b r2l, r0l ROM:00003258 mov.b @gCurSubstateD:16, r0h ROM:0000325C sub.b r0h, r0l ROM:0000325E push.w r0 ROM:00003260 mov.w e2, e1 ; grey pokeball ROM:00003262 mov.w e3, e0 ; normal pokeball ROM:00003264 mov.w #0x1820, r1 ROM:00003268 mov.w r6, r0 ROM:0000326A jsr likelyImageOverlay:24 ; (r0 = imageDataInRam, e0 = img1, r1l = imgWidth, r1h = imgHeight, e1 = img2) ROM:0000326E add.w #8, r7 ROM:00003272 mov.w r6, e0 ROM:00003274 mov.w #0x1820, r1 ROM:00003278 sub.b r0h, r0h ROM:0000327A mov.b @gCurSubstateD:16, r0l ROM:0000327E jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003280 ROM:00003280 loc_3280: ; CODE XREF: battleScreenDraw+BCj ROM:00003280 ; battleScreenDraw+15Ej ROM:00003280 mov.w #0x80, e4 ; 'Ç' ROM:00003284 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003284 ; battle: ROM:00003284 ; 0 - battle opening animation ROM:00003284 ; 1 - "XYZ appeared" message ROM:00003284 ; 2 - "attack evade catch" directions shown ROM:00003284 ; 3 - our action taken. details in gCurSubstateF ROM:00003284 ; 4 - poke action taken. details in gCurSubstateF ROM:00003284 ; 5 - "was too strong" ROM:00003284 ; 6 - we lost ROM:00003284 ; 7 - fled ROM:00003284 ; 8 - staredown ROM:00003284 ; 9 - almost had it ROM:00003284 ; 10 - "threw a pokeball" ROM:00003284 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003284 ; 12, 14 - pokeball flying ROM:00003284 ; 13 - pokeball flying ROM:00003284 ; 15 - catch animation plays ROM:00003284 ; 16 - caught! ROM:00003284 ; switcht: ROM:00003284 ; cur slected poke name ROM:00003288 cmp.b #0x11, r0l ROM:0000328A bhi battle_frame_drawn:16 ROM:0000328E extu.w r0 ROM:00003290 add.w r0, r0 ROM:00003292 mov.w @(JUMPTABLE_3292,er0), r0 ROM:00003296 jmp @er0 ROM:00003298 ; --------------------------------------------------------------------------- ROM:00003298 ROM:00003298 battle_view_case_0: ; DATA XREF: ROM:JUMPTABLE_3292o ROM:00003298 mov.b @gCurSubstateB:16, r6l ; Substate: ROM:00003298 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000329C cmp.b #3, r6l ROM:0000329E bcc battle_frame_drawn:16 ROM:000032A2 mov.b #3, r0l ROM:000032A4 push.w r0 ROM:000032A6 mov.b r0l, r6h ROM:000032A8 sub.b r6l, r6h ROM:000032AA mov.b r6h, r6l ROM:000032AC mov.b #8, r6h ROM:000032AE mulxu.b r6h, r6 ROM:000032B0 mov.b r6l, r6h ROM:000032B2 mov.b r6h, r1h ROM:000032B4 mov.b #0x60, r1l ; '`' ROM:000032B6 sub.w r0, r0 ROM:000032B8 jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:000032BC adds #2, sp ROM:000032BE mov.b #3, r0l ROM:000032C0 push.w r0 ROM:000032C2 mov.b #0x40, r0h ; '@' ROM:000032C4 sub.b r6h, r0h ROM:000032C6 mov.b r6h, r1h ROM:000032C8 mov.b #0x60, r1l ; '`' ROM:000032CA sub.b r0l, r0l ROM:000032CC jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:000032D0 adds #2, sp ROM:000032D2 jmp battle_frame_drawn:24 ROM:000032D6 ; --------------------------------------------------------------------------- ROM:000032D6 ROM:000032D6 battle_view_case_1: ; DATA XREF: ROM:0000BAECo ROM:000032D6 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000032D6 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000032DA mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:000032DA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000032DE cmp.b r0h, r0l ROM:000032E0 bcs battle_frame_drawn:16 ROM:000032E4 jsr is_F7C4_nonzero:24 ROM:000032E8 mov.b r0l, r0l ROM:000032EA bne battle_frame_drawn:16 ROM:000032EE mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000032EE ; gifted items view: this is item number that has focus and arrow ROM:000032EE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000032EE ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000032EE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000032F2 cmp.b #4, r0l ROM:000032F4 bcc loc_3306:8 ROM:000032F6 mov.b r0l, r1l ROM:000032F8 add.b #-1, r1l ROM:000032FA mov.b #5, r1h ROM:000032FC mov.w #0x2000, r0 ROM:00003300 jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00003300 ; ROM:00003300 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:00003304 bra loc_3310:8 ROM:00003306 ; --------------------------------------------------------------------------- ROM:00003306 ROM:00003306 loc_3306: ; CODE XREF: battleScreenDraw+24Ej ROM:00003306 mov.b #5, r1l ROM:00003308 mov.w #0x2000, r0 ROM:0000330C jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:00003310 ROM:00003310 loc_3310: ; CODE XREF: battleScreenDraw+25Ej ROM:00003310 mov.w #0x10E, r1 ROM:00003314 mov.w #0x1F30, r0 ; "appeared!" ROM:00003318 jmp battle_show_msg:24 ROM:0000331C ; --------------------------------------------------------------------------- ROM:0000331C ROM:0000331C battle_view_case_2: ; DATA XREF: ROM:0000BAEEo ROM:0000331C mov.w #0x1DD0, e4 ROM:00003320 add.w val_0x280, e4 ; "attack/evade/catch" directions placard for battles 96x32 ROM:00003322 mov.w e4, r0 ROM:00003324 mov.w #0x300, r1 ROM:00003328 mov.w r6, e0 ROM:0000332A jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000332C mov.w r6, e0 ROM:0000332E mov.w #0x2060, r1 ROM:00003332 mov.w #0x2000, r0 ROM:00003336 jmp loc_366C:24 ROM:0000333A ; --------------------------------------------------------------------------- ROM:0000333A ROM:0000333A battle_view_case_3: ; DATA XREF: ROM:0000BAF0o ROM:0000333A mov.b @gCurSubstateF:16, r0l ; different per view ROM:0000333A ; battle: ROM:0000333A ; bitfield [3..5]: battle action animation (our action) ROM:0000333A ; 0 - attacked ROM:0000333A ; 1 - evaded ROM:0000333A ; 2 - critical hit ROM:0000333A ; bitfield [1..2]: battle action animation (their action) ROM:0000333A ; 0 - attacked ROM:0000333A ; 1 - evaded ROM:0000333A ; 2 - critical hit ROM:0000333E shlr.b r0l ROM:00003340 shlr.b r0l ROM:00003342 shlr.b r0l ROM:00003344 and.b #3, r0l ROM:00003346 beq loc_3356:8 ROM:00003348 cmp.b #1, r0l ROM:0000334A beq loc_3394:8 ROM:0000334C cmp.b #2, r0l ROM:0000334E beq loc_33D4:16 ROM:00003352 jmp battle_frame_drawn:24 ROM:00003356 ; --------------------------------------------------------------------------- ROM:00003356 ROM:00003356 loc_3356: ; CODE XREF: battleScreenDraw+2A0j ROM:00003356 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00003356 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000335A cmp.b #4, r0l ROM:0000335C bne loc_337C:8 ROM:0000335E mov.b #0xB, r0l ROM:00003360 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003364 mov.w e4, r1 ROM:00003366 mov.w #0x1BF0, r0 ROM:0000336A add.w val_0x280, r0 ; skewed small 7-pointed star (attack) 16x32 ROM:0000336C mov.w r6, e0 ROM:0000336E jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003370 mov.w r6, e0 ROM:00003372 mov.w #0x2010, r1 ROM:00003376 mov.w #0x28, r0 ; '(' ROM:0000337A jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000337C ROM:0000337C loc_337C: ; CODE XREF: battleScreenDraw+2B6j ROM:0000337C mov.b @gCurSubstateB:16, r0l ; Substate: ROM:0000337C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003380 cmp.b #4, r0l ROM:00003382 bcs battle_frame_drawn:16 ROM:00003386 mov.b #5, r1l ROM:00003388 mov.w #0x2000, r0 ROM:0000338C jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:00003390 jmp loc_3480:24 ROM:00003394 ; --------------------------------------------------------------------------- ROM:00003394 ROM:00003394 loc_3394: ; CODE XREF: battleScreenDraw+2A4j ROM:00003394 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00003394 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003398 cmp.b #4, r0l ROM:0000339A bne loc_33A2:8 ROM:0000339C mov.b #0xC, r0l ROM:0000339E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000033A2 ROM:000033A2 loc_33A2: ; CODE XREF: battleScreenDraw+2F4j ROM:000033A2 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000033A2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000033A6 cmp.b #4, r0l ROM:000033A8 bcs battle_frame_drawn:16 ROM:000033AC mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000033AC ; gifted items view: this is item number that has focus and arrow ROM:000033AC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000033AC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000033AC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000033B0 cmp.b #4, r0l ROM:000033B2 bcc loc_33C6:8 ROM:000033B4 mov.b r0l, r1l ROM:000033B6 add.b #0xFF, r1l ROM:000033B8 mov.b #5, r1h ROM:000033BA mov.w #0x2000, r0 ROM:000033BE jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:000033BE ; ROM:000033BE ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:000033C2 jmp loc_34AE:24 ROM:000033C6 ; --------------------------------------------------------------------------- ROM:000033C6 ROM:000033C6 loc_33C6: ; CODE XREF: battleScreenDraw+30Cj ROM:000033C6 mov.b #5, r1l ROM:000033C8 mov.w #0x2000, r0 ROM:000033CC jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:000033D0 jmp loc_34AE:24 ROM:000033D4 ; --------------------------------------------------------------------------- ROM:000033D4 ROM:000033D4 loc_33D4: ; CODE XREF: battleScreenDraw+2A8j ROM:000033D4 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000033D4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000033D8 cmp.b #4, r0l ROM:000033DA bne loc_33FA:8 ROM:000033DC mov.b #0xD, r0l ROM:000033DE jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000033E2 mov.w e4, r1 ROM:000033E4 mov.w #0x1C70, r0 ROM:000033E8 add.w val_0x280, r0 ; skewed large 7-pointed star (critical hit attack) 16x32 ROM:000033EA mov.w r6, e0 ROM:000033EC jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000033EE mov.w r6, e0 ROM:000033F0 mov.w #0x2010, r1 ROM:000033F4 mov.w #0x28, r0 ; '(' ROM:000033F8 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000033FA ROM:000033FA loc_33FA: ; CODE XREF: battleScreenDraw+334j ROM:000033FA mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000033FA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000033FE cmp.b #4, r0l ROM:00003400 bcs battle_frame_drawn:16 ROM:00003404 mov.w #0xD, r1 ROM:00003408 mov.w #0x2520, r0 ; "A critical hit!" ROM:0000340C jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000340C ; ROM:0000340C ; //always drawn at x = 0 ROM:0000340C ; ROM:00003410 mov.w #0xE, r1 ROM:00003414 mov.w #0x2630, r0 ; " " (yes, empty message) ROM:00003418 jmp battle_show_msg:24 ROM:0000341C ; --------------------------------------------------------------------------- ROM:0000341C ROM:0000341C battle_view_case_4: ; DATA XREF: ROM:0000BAF2o ROM:0000341C mov.b @gCurSubstateF:16, r0l ; different per view ROM:0000341C ; battle: ROM:0000341C ; bitfield [3..5]: battle action animation (our action) ROM:0000341C ; 0 - attacked ROM:0000341C ; 1 - evaded ROM:0000341C ; 2 - critical hit ROM:0000341C ; bitfield [1..2]: battle action animation (their action) ROM:0000341C ; 0 - attacked ROM:0000341C ; 1 - evaded ROM:0000341C ; 2 - critical hit ROM:00003420 shlr.b r0l ROM:00003422 and.b #3, r0l ROM:00003424 beq loc_342E:8 ROM:00003426 cmp.b #1, r0l ROM:00003428 beq loc_348C:8 ROM:0000342A jmp battle_frame_drawn:24 ROM:0000342E ; --------------------------------------------------------------------------- ROM:0000342E ROM:0000342E loc_342E: ; CODE XREF: battleScreenDraw+37Ej ROM:0000342E mov.b @gCurSubstateB:16, r0l ; Substate: ROM:0000342E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003432 cmp.b #4, r0l ROM:00003434 bne loc_3454:8 ROM:00003436 mov.b #0xB, r0l ROM:00003438 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000343C mov.w e4, r1 ROM:0000343E mov.w #0x1BF0, r0 ; skewed small 7-pointed star (attack) 16x32 ROM:00003442 add.w val_0x280, r0 ROM:00003444 mov.w r6, e0 ROM:00003446 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003448 mov.w r6, e0 ROM:0000344A mov.w #0x2010, r1 ROM:0000344E mov.w #0x28, r0 ; '(' ROM:00003452 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003454 ROM:00003454 loc_3454: ; CODE XREF: battleScreenDraw+38Ej ROM:00003454 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00003454 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003458 cmp.b #4, r0l ROM:0000345A bcs battle_frame_drawn:16 ROM:0000345E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000345E ; gifted items view: this is item number that has focus and arrow ROM:0000345E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000345E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000345E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003462 cmp.b #4, r0l ROM:00003464 bcc loc_3476:8 ROM:00003466 mov.b r0l, r1l ROM:00003468 add.b #0xFF, r1l ROM:0000346A mov.b #5, r1h ROM:0000346C mov.w #0x2000, r0 ROM:00003470 jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00003470 ; ROM:00003470 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:00003474 bra loc_3480:8 ROM:00003476 ; --------------------------------------------------------------------------- ROM:00003476 ROM:00003476 loc_3476: ; CODE XREF: battleScreenDraw+3BEj ROM:00003476 mov.b #5, r1l ROM:00003478 mov.w #0x2000, r0 ROM:0000347C jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:00003480 ROM:00003480 loc_3480: ; CODE XREF: battleScreenDraw+2EAj ROM:00003480 ; battleScreenDraw+3CEj ROM:00003480 mov.w #0xE, r1 ROM:00003484 mov.w #0x2330, r0 ; "attacked!" ROM:00003488 jmp battle_show_msg:24 ROM:0000348C ; --------------------------------------------------------------------------- ROM:0000348C ROM:0000348C loc_348C: ; CODE XREF: battleScreenDraw+382j ROM:0000348C mov.b @gCurSubstateB:16, r0l ; Substate: ROM:0000348C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003490 cmp.b #4, r0l ROM:00003492 bne loc_349A:8 ROM:00003494 mov.b #0xC, r0l ROM:00003496 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000349A ROM:0000349A loc_349A: ; CODE XREF: battleScreenDraw+3ECj ROM:0000349A mov.b @gCurSubstateB:16, r0l ; Substate: ROM:0000349A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000349E cmp.b #4, r0l ROM:000034A0 bcs battle_frame_drawn:16 ROM:000034A4 mov.b #5, r1l ROM:000034A6 mov.w #0x2000, r0 ROM:000034AA jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:000034AE ROM:000034AE loc_34AE: ; CODE XREF: battleScreenDraw+31Cj ROM:000034AE ; battleScreenDraw+32Aj ROM:000034AE mov.w #0xE, r1 ROM:000034B2 mov.w #0x2430, r0 ; "evaded!" ROM:000034B6 jmp battle_show_msg:24 ROM:000034BA ; --------------------------------------------------------------------------- ROM:000034BA ROM:000034BA battle_view_case_5: ; DATA XREF: ROM:0000BAF4o ROM:000034BA mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000034BA ; gifted items view: this is item number that has focus and arrow ROM:000034BA ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000034BA ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000034BA ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000034BE cmp.b #4, r0l ROM:000034C0 bcc loc_34D2:8 ROM:000034C2 mov.b r0l, r1l ROM:000034C4 add.b #0xFF, r1l ROM:000034C6 mov.b #5, r1h ROM:000034C8 mov.w #0x2000, r0 ROM:000034CC jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:000034CC ; ROM:000034CC ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:000034D0 bra loc_34DC:8 ROM:000034D2 ; --------------------------------------------------------------------------- ROM:000034D2 ROM:000034D2 loc_34D2: ; CODE XREF: battleScreenDraw+41Aj ROM:000034D2 mov.b #5, r1l ROM:000034D4 mov.w #0x2000, r0 ROM:000034D8 jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:000034DC ROM:000034DC loc_34DC: ; CODE XREF: battleScreenDraw+42Aj ROM:000034DC mov.w #0xE, r1 ROM:000034E0 mov.w #0x2230, r0 ; "was too strong." ROM:000034E4 jmp battle_show_msg:24 ROM:000034E8 ; --------------------------------------------------------------------------- ROM:000034E8 ROM:000034E8 battle_view_case_6: ; DATA XREF: ROM:0000BAF6o ROM:000034E8 mov.b #0xD, r1l ROM:000034EA mov.w @gCurSubstateE:16, e0 ; ubstate for various modes ROM:000034EA ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:000034EE mov.w #0x2002, r0 ROM:000034F2 jsr drawNumberAndWattsymbolOnscreen:24 ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:000034F6 mov.w #0x10E, r1 ROM:000034FA mov.w #0x2A30, r0 ; "lost!" ROM:000034FE jmp battle_show_msg:24 ROM:00003502 ; --------------------------------------------------------------------------- ROM:00003502 ROM:00003502 battle_view_case_8: ; DATA XREF: ROM:0000BAFAo ROM:00003502 mov.w #0xF, r1 ROM:00003506 mov.w #0x2930, r0 ; "Stare down!" ROM:0000350A jmp battle_show_msg:24 ROM:0000350E ; --------------------------------------------------------------------------- ROM:0000350E ROM:0000350E battle_view_case_7: ; DATA XREF: ROM:0000BAF8o ROM:0000350E mov.b @gCurSubstateB:16, r0l ; Substate: ROM:0000350E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003512 cmp.b #3, r0l ROM:00003514 bls battle_frame_drawn:16 ROM:00003518 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00003518 ; gifted items view: this is item number that has focus and arrow ROM:00003518 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003518 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003518 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000351C cmp.b #4, r0l ROM:0000351E bcc loc_3530:8 ROM:00003520 mov.b r0l, r1l ROM:00003522 add.b #0xFF, r1l ROM:00003524 mov.b #5, r1h ROM:00003526 mov.w #0x2000, r0 ROM:0000352A jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:0000352A ; ROM:0000352A ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:0000352E bra loc_353A:8 ROM:00003530 ; --------------------------------------------------------------------------- ROM:00003530 ROM:00003530 loc_3530: ; CODE XREF: battleScreenDraw+478j ROM:00003530 mov.b #5, r1l ROM:00003532 mov.w #0x2000, r0 ROM:00003536 jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:0000353A ROM:0000353A loc_353A: ; CODE XREF: battleScreenDraw+488j ROM:0000353A mov.w #0x10E, r1 ROM:0000353E mov.w #0x2130, r0 ; "fled..." ROM:00003542 jmp battle_show_msg:24 ROM:00003546 ; --------------------------------------------------------------------------- ROM:00003546 ROM:00003546 battle_view_case_10: ; DATA XREF: ROM:0000BAFEo ROM:00003546 mov.w #0xF, r1 ROM:0000354A mov.w #0x2730, r0 ; "Threw a Poke Ball." ROM:0000354E jmp battle_show_msg:24 ROM:00003552 ; --------------------------------------------------------------------------- ROM:00003552 ROM:00003552 battle_view_case_11: ; DATA XREF: ROM:0000BB00o ROM:00003552 jmp battle_view_case_17:24 ROM:00003556 ; --------------------------------------------------------------------------- ROM:00003556 ROM:00003556 battle_view_case_12: ; DATA XREF: ROM:0000BB02o ROM:00003556 bra battle_view_case_14:8 ROM:00003558 ; --------------------------------------------------------------------------- ROM:00003558 ROM:00003558 battle_view_case_13: ; DATA XREF: ROM:0000BB04o ROM:00003558 mov.b @curUiFlags:16, r0l ; bits: ROM:00003558 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00003558 ; 0x02 - slower animation frame ROM:0000355C and.b #3, r0l ROM:0000355E beq loc_356E:8 ROM:00003560 cmp.b #1, r0l ROM:00003562 beq loc_3576:8 ROM:00003564 cmp.b #2, r0l ROM:00003566 beq loc_3572:8 ROM:00003568 cmp.b #3, r0l ROM:0000356A bne loc_3578:8 ROM:0000356C bra loc_3576:8 ROM:0000356E ; --------------------------------------------------------------------------- ROM:0000356E ROM:0000356E loc_356E: ; CODE XREF: battleScreenDraw+4B8j ROM:0000356E mov.b #0x13, r2l ROM:00003570 bra loc_3578:8 ROM:00003572 ; --------------------------------------------------------------------------- ROM:00003572 ROM:00003572 loc_3572: ; CODE XREF: battleScreenDraw+4C0j ROM:00003572 mov.b #0x15, r2l ROM:00003574 bra loc_3578:8 ROM:00003576 ; --------------------------------------------------------------------------- ROM:00003576 ROM:00003576 loc_3576: ; CODE XREF: battleScreenDraw+4BCj ROM:00003576 ; battleScreenDraw+4C6j ROM:00003576 mov.b #0x14, r2l ROM:00003578 ROM:00003578 loc_3578: ; CODE XREF: battleScreenDraw+4C4j ROM:00003578 ; battleScreenDraw+4CAj ... ROM:00003578 mov.w #0x1E0, e4 ROM:0000357C add.w val_0x280, e4 ; pokeball 8x8 ROM:0000357E mov.w e4, r0 ROM:00003580 mov.w val_0x10, r1 ROM:00003582 mov.w r6, e0 ROM:00003584 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003586 mov.w r6, e0 ROM:00003588 mov.w #0x808, r1 ROM:0000358C mov.b #0xC, r0h ROM:0000358E mov.b r2l, r0l ROM:00003590 jmp loc_366C:24 ROM:00003594 ; --------------------------------------------------------------------------- ROM:00003594 ROM:00003594 battle_view_case_14: ; CODE XREF: battleScreenDraw:battle_view_case_12j ROM:00003594 ; DATA XREF: ROM:0000BB06o ROM:00003594 mov.w #0x1E0, e4 ROM:00003598 add.w val_0x280, e4 ROM:0000359A mov.w e4, r0 ROM:0000359C mov.w val_0x10, r1 ROM:0000359E mov.w r6, e0 ROM:000035A0 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000035A2 mov.w r6, e0 ROM:000035A4 mov.w #0x808, r1 ROM:000035A8 mov.w #0xC14, r0 ROM:000035AC jmp loc_366C:24 ROM:000035B0 ; --------------------------------------------------------------------------- ROM:000035B0 ROM:000035B0 battle_view_case_15: ; DATA XREF: ROM:0000BB08o ROM:000035B0 mov.w #0x1E0, e4 ROM:000035B4 add.w val_0x280, e4 ROM:000035B6 mov.w e4, r0 ROM:000035B8 mov.w val_0x10, r1 ROM:000035BA mov.w r6, e0 ROM:000035BC jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000035BE mov.w r6, e0 ROM:000035C0 mov.w #0x808, r1 ROM:000035C4 mov.w #0xC14, r0 ROM:000035C8 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000035CA mov.w #0x1DC0, e4 ROM:000035CE add.w val_0x280, e4 ; a little 5-pointed star image for when we catch something 8x8 ROM:000035D0 mov.w e4, r0 ROM:000035D2 mov.w val_0x10, r1 ROM:000035D4 mov.w r6, e0 ROM:000035D6 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000035D8 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000035D8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000035DC shll.b r0l ROM:000035DE mov.b #0xA, r0h ROM:000035E0 sub.b r0l, r0h ROM:000035E2 mov.b #0xC, r0l ROM:000035E4 mov.b @gCurSubstateB:16, r1l ; Substate: ROM:000035E4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000035E8 sub.b r1l, r0l ROM:000035EA mov.w r6, e0 ROM:000035EC mov.w #0x808, r1 ROM:000035F0 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000035F2 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000035F2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000035F6 shll.b r0l ROM:000035F8 mov.b #0xC, r0h ROM:000035FA sub.b r0l, r0h ROM:000035FC mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000035FC ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003600 add.b #0x1C, r0l ROM:00003602 mov.w r6, e0 ROM:00003604 mov.w #0x808, r1 ROM:00003608 bra loc_366C:8 ROM:0000360A ; --------------------------------------------------------------------------- ROM:0000360A ROM:0000360A battle_view_case_16: ; DATA XREF: ROM:0000BB0Ao ROM:0000360A mov.w #0x1E0, e4 ROM:0000360E add.w val_0x280, e4 ROM:00003610 mov.w e4, r0 ROM:00003612 mov.w val_0x10, r1 ROM:00003614 mov.w r6, e0 ROM:00003616 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003618 mov.w r6, e0 ROM:0000361A mov.w #0x808, r1 ROM:0000361E mov.w #0xC14, r0 ROM:00003622 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003624 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00003624 ; gifted items view: this is item number that has focus and arrow ROM:00003624 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003624 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003624 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003628 cmp.b #4, r0l ROM:0000362A bcc loc_363C:8 ROM:0000362C mov.b r0l, r1l ROM:0000362E add.b #0xFF, r1l ROM:00003630 mov.b #5, r1h ROM:00003632 mov.w #0x2000, r0 ROM:00003636 jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00003636 ; ROM:00003636 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:0000363A bra loc_3646:8 ROM:0000363C ; --------------------------------------------------------------------------- ROM:0000363C ROM:0000363C loc_363C: ; CODE XREF: battleScreenDraw+584j ROM:0000363C mov.b #5, r1l ROM:0000363E mov.w #0x2000, r0 ROM:00003642 jsr drawNameOfEventPokemon:24 ; (r0l = x, r0h = y, r1l = pokemonNameBorderFlags) ROM:00003646 ROM:00003646 loc_3646: ; CODE XREF: battleScreenDraw+594j ROM:00003646 mov.w #0x10E, r1 ROM:0000364A mov.w #0x2030, r0 ; "was caught!" ROM:0000364E ROM:0000364E battle_show_msg: ; CODE XREF: battleScreenDraw+272j ROM:0000364E ; battleScreenDraw+372j ... ROM:0000364E jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000364E ; ROM:0000364E ; //always drawn at x = 0 ROM:0000364E ; ROM:00003652 bra battle_frame_drawn:8 ROM:00003654 ; --------------------------------------------------------------------------- ROM:00003654 ROM:00003654 battle_view_case_17: ; CODE XREF: battleScreenDraw:battle_view_case_11j ROM:00003654 ; DATA XREF: ROM:0000BB0Co ROM:00003654 mov.w #0x1CF0, e4 ROM:00003658 add.w val_0x280, e4 ; cloud "for pokemon appeared" 32x24 ROM:0000365A mov.w e4, r0 ROM:0000365C mov.w e5, r1 ROM:0000365E mov.w r6, e0 ROM:00003660 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003662 mov.w r6, e0 ROM:00003664 mov.w #0x1820, r1 ROM:00003668 mov.w #8, r0 ROM:0000366C ROM:0000366C loc_366C: ; CODE XREF: battleScreenDraw+290j ROM:0000366C ; battleScreenDraw+4EAj ... ROM:0000366C jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000366E bra battle_frame_drawn:8 ROM:00003670 ; --------------------------------------------------------------------------- ROM:00003670 ROM:00003670 battle_view_case_9: ; DATA XREF: ROM:0000BAFCo ROM:00003670 mov.w #0xF, r1 ROM:00003674 mov.w #0x2830, r0 ; "Almost had it!" ROM:00003678 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00003678 ; ROM:00003678 ; //always drawn at x = 0 ROM:00003678 ; ROM:0000367C ROM:0000367C battle_frame_drawn: ; CODE XREF: battleScreenDraw+1E4j ROM:0000367C ; battleScreenDraw+1F8j ... ROM:0000367C sub.w r0, r0 ROM:0000367E jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00003682 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00003682 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003686 inc.b r0l ROM:00003688 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00003688 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000368C mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:0000368C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00003690 cmp.b r0h, r0l ROM:00003692 bcs locret_369A:8 ROM:00003694 mov.b r0h, r0l ROM:00003696 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00003696 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000369A ROM:0000369A locret_369A: ; CODE XREF: battleScreenDraw+5ECj ROM:0000369A rts ROM:0000369A ; End of function battleScreenDraw ROM:0000369A ROM:0000369C ROM:0000369C ; =============== S U B R O U T I N E ======================================= ROM:0000369C ROM:0000369C ROM:0000369C is_F7C4_nonzero: ; CODE XREF: sub_2972p ROM:0000369C ; interactionHandlerPokeBattle+60p ... ROM:0000369C mov.w @word_FFF7C4:16, r0 ROM:000036A0 bne loc_36A6:8 ROM:000036A2 sub.b r0l, r0l ROM:000036A4 bra locret_36A8:8 ROM:000036A6 ; --------------------------------------------------------------------------- ROM:000036A6 ROM:000036A6 loc_36A6: ; CODE XREF: is_F7C4_nonzero+4j ROM:000036A6 mov.b #1, r0l ROM:000036A8 ROM:000036A8 locret_36A8: ; CODE XREF: is_F7C4_nonzero+8j ROM:000036A8 rts ROM:000036A8 ; End of function is_F7C4_nonzero ROM:000036A8 ROM:000036AA ROM:000036AA ; =============== S U B R O U T I N E ======================================= ROM:000036AA ROM:000036AA ROM:000036AA configureSomeIoAndTimerW: ; CODE XREF: ENTRY+94p ROM:000036AA mov.b #0x78, r0l ; 'x' ROM:000036AC mov.b r0l, @byte_FFF7CC:16 ROM:000036B0 sub.b r0l, r0l ROM:000036B2 mov.b r0l, @likelyVolume:16 ROM:000036B6 mov.b @IO_PCR8:8, r0h ROM:000036B8 or.b #0xC, r0h ROM:000036BA mov.b r0h, @IO_PCR8:8 ROM:000036BC bclr #2, @IO_PDR8:8 ROM:000036C0 bclr #3, @IO_PDR8:8 ROM:000036C4 bset #6, @CKSTPR2:8 ROM:000036C8 mov.b #0xC0, r0h ; '+' ; TMRW counts on phiW ROM:000036CA mov.b r0h, @TMRW_TCRW:16 ROM:000036CE mov.b #0x10, r0h ROM:000036D0 mov.b r0h, @TMRW_TIOR0:16 ROM:000036D4 mov.b #1, r0h ROM:000036D6 mov.b r0h, @TMRW_TIOR1:16 ROM:000036DA sub.w e0, e0 ROM:000036DC mov.w e0, @TMRW_GRA:16 ROM:000036E0 mov.w e0, @TMRW_GRB:16 ROM:000036E4 mov.w e0, @TMRW_GRC:16 ROM:000036E8 bclr #6, @CKSTPR2:8 ROM:000036EC mov.w e0, @word_FFF7C4:16 ROM:000036F0 rts ROM:000036F0 ; End of function configureSomeIoAndTimerW ROM:000036F0 ROM:000036F2 ROM:000036F2 ; =============== S U B R O U T I N E ======================================= ROM:000036F2 ROM:000036F2 ; (r0l = whichArea of 16) ROM:000036F2 ROM:000036F2 randomEepromChecksumCheck: ; CODE XREF: sub_2938+36j ROM:000036F2 ; sub_2972+D2p ... ROM:000036F2 ROM:000036F2 var_2 = -2 ROM:000036F2 var_1 = -1 ROM:000036F2 ROM:000036F2 idx = r5l ROM:000036F2 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000036F6 subs #4, sp ROM:000036F8 mov.w #word_FFF7C4, r6 ROM:000036FC mov.b r0l, idx ROM:000036FE mov.b @likelyVolume:16, r0h ROM:00003702 beq loc_37C0:16 ROM:00003706 mov.w #TMRW_TIERW, r0 ROM:0000370A bclr #0, @er0 ROM:0000370E mov.b idx, r1l ROM:00003710 mov.w #0x8CB0, r5 ; aread descriptors live here ROM:00003714 mov.b r1l, r0l ROM:00003716 extu.w r0 ROM:00003718 shll.w r0 ROM:0000371A shll.w r0 ROM:0000371C add.w r0, r5 ; 0x8CB0 + param_r0l * 4 ROM:0000371E mov.w r7, e0 ; sp ROM:00003720 mov.w r5, r0 ROM:00003722 mov.w #4, r1 ROM:00003726 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000372A mov.w @sp, e6 ; first read word ROM:0000372C mov.w e6, r0 ROM:0000372E mov.b r0h, r0l ; bottom byte of it ROM:00003730 sub.b r0h, r0h ROM:00003732 mov.w e6, r1 ROM:00003734 mov.b r1l, r1h ; top byte of it ROM:00003736 sub.b r1l, r1l ROM:00003738 or.w r1, r0 ; it is bytteswapped now ROM:0000373A mov.w r0, e6 ROM:0000373C mov.w #0x8CF0, r0 ; add 0x8CF0 to it ROM:00003740 add.w r0, e6 ROM:00003742 mov.b @(2:16,sp), r0l ; 3rd byte read ROM:00003746 cmp.b #0xC0, r0l ; '+' ROM:00003748 bhi loc_37B8:8 ; not more than 0xC0 ROM:0000374A mov.w #ACCEL_SAMPLES_X, r0 ROM:0000374E mov.w r0, @er6 ROM:00003750 mov.b @(2:16,sp), r1l ; 3rd byte read again ROM:00003754 extu.w r1 ; rad thta many bytes ROM:00003756 mov.w e6, r0 ; read that given address ROM:00003758 mov.w @er6, e0 ; read to 0xF826 ROM:0000375A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000375E sub.w r5, r5 ROM:00003760 bra loc_3778:8 ROM:00003762 ; --------------------------------------------------------------------------- ROM:00003762 ROM:00003762 loop_again: ; CODE XREF: randomEepromChecksumCheck+94j ROM:00003762 mov.b idx, r1l ROM:00003764 extu.w r1 ROM:00003766 shll.w r1 ; idx * 2 ROM:00003768 mov.w @er6, r0 ; F826, unless modified ROM:0000376A add.w r0, r1 ; + idx * 2 ROM:0000376C mov.b @er1, r0l ; read byte there ROM:0000376E add.b r0l, r5h ; sum up both bytes there ROM:00003770 mov.b @(1:16,er1), r1l ROM:00003774 add.b r1l, r5h ROM:00003776 inc.b idx ROM:00003778 ROM:00003778 loc_3778: ; CODE XREF: randomEepromChecksumCheck+6Ej ROM:00003778 mov.b @(2:16,sp), r0l ; 3rd byte read again ROM:0000377C extu.w r0 ROM:0000377E shlr.w r0 ROM:00003780 mov.b idx, r1l ROM:00003782 extu.w r1 ROM:00003784 cmp.w r0, r1 ROM:00003786 bcs loop_again:8 ROM:00003788 mov.b @(3:16,sp), r0l ; 4th byte read - the checksum ROM:0000378C cmp.b r0l, r5h ROM:0000378E bne checksum_mismatch:8 ROM:00003790 ROM:00003790 sum_matches: ROM:00003790 mov.b @(2:16,sp), r0l ROM:00003794 extu.w r0 ROM:00003796 shlr.w r0 ROM:00003798 shll.w r0 ; round to word size ROM:0000379A mov.w @er6, r1 ROM:0000379C add.w r0, r1 ROM:0000379E mov.b @(-1:16,er1), r1l ROM:000037A2 and.b #0x7F, r1l ROM:000037A4 cmp.b #0x7E, r1l ; '~' ROM:000037A6 bcc loc_37AE:8 ROM:000037A8 ROM:000037A8 checksum_mismatch: ; CODE XREF: randomEepromChecksumCheck+9Cj ROM:000037A8 sub.w r0, r0 ROM:000037AA mov.w r0, @er6 ROM:000037AC bra loc_37B8:8 ROM:000037AE ; --------------------------------------------------------------------------- ROM:000037AE ROM:000037AE loc_37AE: ; CODE XREF: randomEepromChecksumCheck+B4j ROM:000037AE sub.w r0, r0 ROM:000037B0 mov.w r0, @word_FFF7C8:16 ROM:000037B4 mov.w r0, @word_FFF7CA:16 ROM:000037B8 ROM:000037B8 loc_37B8: ; CODE XREF: randomEepromChecksumCheck+56j ROM:000037B8 ; randomEepromChecksumCheck+BAj ROM:000037B8 mov.w #TMRW_TIERW, r0 ROM:000037BC bset #0, @er0 ROM:000037C0 ROM:000037C0 loc_37C0: ; CODE XREF: randomEepromChecksumCheck+10j ROM:000037C0 adds #4, sp ROM:000037C2 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000037C2 ; End of function randomEepromChecksumCheck ROM:000037C2 ROM:000037C6 ROM:000037C6 ; =============== S U B R O U T I N E ======================================= ROM:000037C6 ROM:000037C6 ; (r0 = value to write ) ROM:000037C6 ROM:000037C6 write_F7C4_clear_F7C8_and_F7CA: ; CODE XREF: interactionHandlerDebugMode22+66p ROM:000037C6 ; interactionHandlerDebugMode22+158p ... ROM:000037C6 mov.w r0, @word_FFF7C4:16 ROM:000037CA sub.w r0, r0 ROM:000037CC mov.w r0, @word_FFF7C8:16 ROM:000037D0 mov.w r0, @word_FFF7CA:16 ROM:000037D4 rts ROM:000037D4 ; End of function write_F7C4_clear_F7C8_and_F7CA ROM:000037D4 ROM:000037D6 ROM:000037D6 ; =============== S U B R O U T I N E ======================================= ROM:000037D6 ROM:000037D6 ROM:000037D6 sub_37D6: ; CODE XREF: sleepModeEventLoop+104p ROM:000037D6 bset #6, @CKSTPR2:8 ROM:000037DA mov.w #TMRW_TIERW, r0 ; fff0f2 ROM:000037DE bclr #0, @er0 ROM:000037E2 mov.b #0xC0, r0l ; '+' ; TMRW counts on phiW ROM:000037E4 mov.b r0l, @TMRW_TCRW:16 ROM:000037E8 mov.b #0x10, r0l ROM:000037EA mov.b r0l, @TMRW_TIOR0:16 ROM:000037EE mov.b #1, r0l ROM:000037F0 mov.b r0l, @TMRW_TIOR1:16 ROM:000037F4 mov.w #TMRW_TSRW, r1 ROM:000037F8 bclr #0, @er1 ROM:000037FC mov.b #lo8(TMRW_TIERW), r1l ROM:000037FE bset #0, @er1 ROM:00003802 sub.w e0, e0 ROM:00003804 mov.w e0, @TMRW_TCNT:16 ROM:00003808 mov.b #0x80, r0h ; 'Ç' ROM:0000380A mov.b r0h, @TMRW_TMRW:16 ROM:0000380E rts ROM:0000380E ; End of function sub_37D6 ROM:0000380E ROM:00003810 ROM:00003810 ; =============== S U B R O U T I N E ======================================= ROM:00003810 ROM:00003810 ROM:00003810 sub_3810: ; CODE XREF: normalModeEventLoop+5Ep ROM:00003810 ; sub_A2DAp ROM:00003810 mov.w #TMRW_TIERW, r0 ROM:00003814 bclr #0, @er0 ROM:00003818 sub.b r0l, r0l ROM:0000381A mov.b r0l, @TMRW_TMRW:16 ROM:0000381E mov.b #0xC0, r0h ; '+' ; TMRW counts on phiW ROM:00003820 mov.b r0h, @TMRW_TCRW:16 ROM:00003824 mov.w #TMRW_TSRW, r1 ROM:00003828 bclr #0, @er1 ROM:0000382C bclr #6, @CKSTPR2:8 ROM:00003830 rts ROM:00003830 ; End of function sub_3810 ROM:00003830 ROM:00003832 ROM:00003832 ; =============== S U B R O U T I N E ======================================= ROM:00003832 ROM:00003832 ROM:00003832 likelysetVolume: ; CODE XREF: performActionAsRequestedByRemote+C6p ROM:00003832 ; ENTRY+A2p ... ROM:00003832 mov.b r0l, @likelyVolume:16 ROM:00003836 rts ROM:00003836 ; End of function likelysetVolume ROM:00003836 ROM:00003838 ROM:00003838 ; =============== S U B R O U T I N E ======================================= ROM:00003838 ROM:00003838 ; (val is period in 32khz clocks) ROM:00003838 ROM:00003838 setBeeperFreq: ; CODE XREF: timer_w_irq:loc_3A3Ap ROM:00003838 mov.b r0l, r5l ROM:0000383A extu.w r5 ROM:0000383C mov.w r5, r0 ROM:0000383E mov.b @likelyVolume:16, r1l ROM:00003842 beq loc_384E:8 ROM:00003844 cmp.b #1, r1l ROM:00003846 beq loc_385C:8 ROM:00003848 cmp.b #2, r1l ROM:0000384A bne loc_3884:8 ROM:0000384C bra loc_386E:8 ROM:0000384E ; --------------------------------------------------------------------------- ROM:0000384E ROM:0000384E loc_384E: ; CODE XREF: setBeeperFreq+Aj ROM:0000384E mov.w r0, @TMRW_GRA:16 ROM:00003852 mov.w r0, @TMRW_GRB:16 ROM:00003856 mov.w r0, @TMRW_GRC:16 ROM:0000385A bra loc_3884:8 ROM:0000385C ; --------------------------------------------------------------------------- ROM:0000385C ROM:0000385C loc_385C: ; CODE XREF: setBeeperFreq+Ej ROM:0000385C mov.w r0, @TMRW_GRA:16 ROM:00003860 extu.w r5 ROM:00003862 shar.w r5 ROM:00003864 mov.w r5, @TMRW_GRB:16 ROM:00003868 mov.w r0, @TMRW_GRC:16 ROM:0000386C bra loc_3884:8 ROM:0000386E ; --------------------------------------------------------------------------- ROM:0000386E ROM:0000386E loc_386E: ; CODE XREF: setBeeperFreq+14j ROM:0000386E mov.w r0, @TMRW_GRA:16 ROM:00003872 extu.w r5 ROM:00003874 mov.w r5, r0 ROM:00003876 shar.w r0 ROM:00003878 mov.w r0, @TMRW_GRB:16 ROM:0000387C extu.w r5 ROM:0000387E shar.w r5 ROM:00003880 mov.w r5, @TMRW_GRC:16 ROM:00003884 ROM:00003884 loc_3884: ; CODE XREF: setBeeperFreq+12j ROM:00003884 ; setBeeperFreq+22j ... ROM:00003884 sub.w r0, r0 ROM:00003886 mov.w r0, @TMRW_TCNT:16 ROM:0000388A rts ROM:0000388A ; End of function setBeeperFreq ROM:0000388A ROM:0000388C ROM:0000388C ; =============== S U B R O U T I N E ======================================= ROM:0000388C ROM:0000388C ROM:0000388C timer_w_irq: ; CODE XREF: VECTOR_TIMER_W+8p ROM:0000388C push.w r6 ROM:0000388E push.w r5 ROM:00003890 mov.w #word_FFF7C4, r6 ROM:00003894 mov.w @er6, r0 ROM:00003896 beq loc_3A44:16 ROM:0000389A mov.w @word_FFF7C8:16, r0 ROM:0000389E beq loc_38D8:8 ROM:000038A0 mov.w @word_FFF7C8:16, r0 ROM:000038A4 dec.w #1, r0 ROM:000038A6 mov.w r0, @word_FFF7C8:16 ROM:000038AA mov.w @word_FFF7C8:16, r0 ROM:000038AE dec.w #1, r0 ROM:000038B0 bne loc_38D0:8 ROM:000038B2 mov.w @er6, r0 ROM:000038B4 mov.b @(1:16,er0), r0l ROM:000038B8 and.b #0x7F, r0l ROM:000038BA cmp.b #0x7F, r0l ; '' ROM:000038BC bne loc_38D0:8 ROM:000038BE mov.b #0x80, r0l ; 'Ç' ROM:000038C0 mov.b r0l, @TMRW_TMRW:16 ROM:000038C4 mov.b #0x10, r0l ROM:000038C6 mov.b r0l, @TMRW_TIOR0:16 ROM:000038CA mov.b #1, r0l ROM:000038CC mov.b r0l, @TMRW_TIOR1:16 ROM:000038D0 ROM:000038D0 loc_38D0: ; CODE XREF: timer_w_irq+24j ROM:000038D0 ; timer_w_irq+30j ROM:000038D0 mov.w @word_FFF7C8:16, r0 ROM:000038D4 bne loc_3A44:16 ROM:000038D8 ROM:000038D8 loc_38D8: ; CODE XREF: timer_w_irq+12j ROM:000038D8 mov.w @word_FFF7C8:16, r0 ROM:000038DC bne loc_3910:8 ROM:000038DE mov.w @word_FFF7CA:16, r0 ROM:000038E2 beq loc_3910:8 ROM:000038E4 mov.w #0x140, r0 ROM:000038E8 mov.w r0, @TMRW_GRA:16 ROM:000038EC mov.w r0, @TMRW_GRB:16 ROM:000038F0 mov.w r0, @TMRW_GRC:16 ROM:000038F4 sub.w e0, e0 ROM:000038F6 mov.w e0, @TMRW_TCNT:16 ROM:000038FA mov.w @word_FFF7CA:16, e0 ROM:000038FE beq loc_3A44:16 ROM:00003902 mov.w @word_FFF7CA:16, e0 ROM:00003906 dec.w #1, e0 ROM:00003908 mov.w e0, @word_FFF7CA:16 ROM:0000390C jmp loc_3A44:24 ROM:00003910 ; --------------------------------------------------------------------------- ROM:00003910 ROM:00003910 loc_3910: ; CODE XREF: timer_w_irq+50j ROM:00003910 ; timer_w_irq+56j ROM:00003910 mov.w @er6, r0 ROM:00003912 mov.b @(1:16,er0), r0l ROM:00003916 and.b #0x7F, r0l ROM:00003918 cmp.b #0x7F, r0l ; '' ROM:0000391A bne loc_3922:8 ROM:0000391C sub.w r0, r0 ROM:0000391E jmp loc_3A42:24 ROM:00003922 ; --------------------------------------------------------------------------- ROM:00003922 ROM:00003922 loc_3922: ; CODE XREF: timer_w_irq+8Ej ROM:00003922 cmp.b #0x7B, r0l ; '{' ROM:00003924 bne loc_3934:8 ROM:00003926 mov.w @er6, r0 ROM:00003928 mov.b @er0, r0l ROM:0000392A mov.b r0l, @byte_FFF7CC:16 ROM:0000392E mov.w @er6, r0 ROM:00003930 inc.w #2, r0 ROM:00003932 mov.w r0, @er6 ROM:00003934 ROM:00003934 loc_3934: ; CODE XREF: timer_w_irq+98j ROM:00003934 mov.w @er6, r0 ROM:00003936 mov.b @(1:16,er0), r0l ROM:0000393A and.b #0x7F, r0l ROM:0000393C cmp.b #0x7E, r0l ; '~' ROM:0000393E bne loc_3948:8 ROM:00003940 mov.w #ACCEL_SAMPLES_X, r0 ROM:00003944 jmp loc_3A42:24 ROM:00003948 ; --------------------------------------------------------------------------- ROM:00003948 ROM:00003948 loc_3948: ; CODE XREF: timer_w_irq+B2j ROM:00003948 mov.w #0xBB4A, r5 ROM:0000394C mov.w @er6, r0 ROM:0000394E mov.b @(1:16,er0), r0l ROM:00003952 and.b #0x7F, r0l ROM:00003954 cmp.b #0x7D, r0l ; '}' ROM:00003956 bne loc_3990:8 ROM:00003958 mov.w @er6, r0 ROM:0000395A sub.l er1, er1 ROM:0000395C mov.b @er0, r1l ROM:0000395E mov.l #0x14000, er0 ROM:00003964 jsr mul32:24 ; er0 = er0 * er1 ROM:00003968 sub.l er1, er1 ROM:0000396A mov.b @byte_FFF7CC:16, r1l ROM:0000396E jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00003972 mov.w @er6, r1 ROM:00003974 mov.b @(1:16,er1), r1l ROM:00003978 and.b #0x7F, r1l ROM:0000397A extu.w r1 ROM:0000397C add.w r1, r5 ROM:0000397E mov.b @er5, r5l ROM:00003980 extu.w r5 ROM:00003982 extu.l er0 ROM:00003984 divxu.w r5, er0 ROM:00003986 mov.w r0, @word_FFF7C8:16 ROM:0000398A sub.b r0l, r0l ROM:0000398C jmp loc_3A3A:24 ROM:00003990 ; --------------------------------------------------------------------------- ROM:00003990 ROM:00003990 loc_3990: ; CODE XREF: timer_w_irq+CAj ROM:00003990 mov.w @er6, r0 ROM:00003992 mov.b @(1:16,er0), r1l ROM:00003996 bpl loc_39D0:8 ROM:00003998 sub.l er1, er1 ROM:0000399A mov.b @er0, r1l ROM:0000399C mov.l #0x14000, er0 ROM:000039A2 jsr mul32:24 ; er0 = er0 * er1 ROM:000039A6 sub.l er1, er1 ROM:000039A8 mov.b @byte_FFF7CC:16, r1l ROM:000039AC jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:000039B0 mov.w @er6, r1 ROM:000039B2 mov.b @(1:16,er1), r1l ROM:000039B6 and.b #0x7F, r1l ROM:000039B8 extu.w r1 ROM:000039BA add.w r1, r5 ROM:000039BC mov.b @er5, r5l ROM:000039BE extu.w r5 ROM:000039C0 extu.l er0 ROM:000039C2 divxu.w r5, er0 ROM:000039C4 mov.w r0, @word_FFF7C8:16 ROM:000039C8 sub.w r0, r0 ROM:000039CA mov.w r0, @word_FFF7CA:16 ROM:000039CE bra loc_3A0C:8 ROM:000039D0 ; --------------------------------------------------------------------------- ROM:000039D0 ROM:000039D0 loc_39D0: ; CODE XREF: timer_w_irq+10Aj ROM:000039D0 sub.l er1, er1 ROM:000039D2 mov.b @er0, r1l ROM:000039D4 mov.l #0x14000, er0 ROM:000039DA jsr mul32:24 ; er0 = er0 * er1 ROM:000039DE sub.l er1, er1 ROM:000039E0 mov.b @byte_FFF7CC:16, r1l ROM:000039E4 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:000039E8 sub.w #0x140, r0 ROM:000039EC mov.w @er6, r1 ROM:000039EE mov.b @(1:16,er1), r1l ROM:000039F2 and.b #0x7F, r1l ROM:000039F4 extu.w r1 ROM:000039F6 add.w r1, r5 ROM:000039F8 mov.b @er5, r5l ROM:000039FA extu.w r5 ROM:000039FC extu.l er0 ROM:000039FE divxu.w r5, er0 ROM:00003A00 mov.w r0, @word_FFF7C8:16 ROM:00003A04 mov.w #1, r0 ROM:00003A08 mov.w r0, @word_FFF7CA:16 ROM:00003A0C ROM:00003A0C loc_3A0C: ; CODE XREF: timer_w_irq+142j ROM:00003A0C mov.w @er6, r0 ROM:00003A0E mov.w #ACCEL_SAMPLES_X, r1 ROM:00003A12 cmp.w r1, r0 ROM:00003A14 beq loc_3A3E:8 ROM:00003A16 mov.b @(-1:16,er0), r0l ROM:00003A1A and.b #0x80, r0l ROM:00003A1C cmp.b #0x80, r0l ; 'Ç' ROM:00003A1E beq loc_3A3E:8 ROM:00003A20 mov.b #0x83, r0l ; 'â' ROM:00003A22 mov.b r0l, @TMRW_TMRW:16 ROM:00003A26 mov.b #0xC2, r0l ; '-' ROM:00003A28 mov.b r0l, @TMRW_TCRW:16 ROM:00003A2C mov.w @er6, r0 ROM:00003A2E mov.b @(1:16,er0), r0l ROM:00003A32 and.b #0x7F, r0l ROM:00003A34 extu.w r0 ROM:00003A36 mov.b @(FREQTAB,er0), r0l ROM:00003A3A ROM:00003A3A loc_3A3A: ; CODE XREF: timer_w_irq+100j ROM:00003A3A jsr setBeeperFreq:24 ; (val is period in 32khz clocks) ROM:00003A3E ROM:00003A3E loc_3A3E: ; CODE XREF: timer_w_irq+188j ROM:00003A3E ; timer_w_irq+192j ROM:00003A3E mov.w @er6, r0 ROM:00003A40 inc.w #2, r0 ROM:00003A42 ROM:00003A42 loc_3A42: ; CODE XREF: timer_w_irq+92j ROM:00003A42 ; timer_w_irq+B8j ROM:00003A42 mov.w r0, @er6 ROM:00003A44 ROM:00003A44 loc_3A44: ; CODE XREF: timer_w_irq+Aj ROM:00003A44 ; timer_w_irq+48j ... ROM:00003A44 pop.w r5 ROM:00003A46 pop.w r6 ROM:00003A48 rts ROM:00003A48 ; End of function timer_w_irq ROM:00003A48 ROM:00003A4A ROM:00003A4A ; =============== S U B R O U T I N E ======================================= ROM:00003A4A ROM:00003A4A ROM:00003A4A VECTOR_TIMER_W: ; DATA XREF: ROM:00000046o ROM:00003A4A push.l er1 ROM:00003A4E push.l er0 ROM:00003A52 jsr timer_w_irq:24 ROM:00003A56 mov.w #TMRW_TSRW, r0 ROM:00003A5A bclr #0, @er0 ROM:00003A5E pop.l er0 ROM:00003A62 pop.l er1 ROM:00003A66 rte ROM:00003A66 ; End of function VECTOR_TIMER_W ROM:00003A66 ROM:00003A68 ROM:00003A68 ; =============== S U B R O U T I N E ======================================= ROM:00003A68 ROM:00003A68 ; set gCurSubstateZ = 1 ROM:00003A68 ROM:00003A68 set_gCurSubstateZ_to_1: ; CODE XREF: recordPokeCaughtNormal+54p ROM:00003A68 ; interactionHandlerDowsing+12Ap ROM:00003A68 mov.b #1, r0l ROM:00003A6A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003A6A ; battle: ROM:00003A6A ; 0 - battle opening animation ROM:00003A6A ; 1 - "XYZ appeared" message ROM:00003A6A ; 2 - "attack evade catch" directions shown ROM:00003A6A ; 3 - our action taken. details in gCurSubstateF ROM:00003A6A ; 4 - poke action taken. details in gCurSubstateF ROM:00003A6A ; 5 - "was too strong" ROM:00003A6A ; 6 - we lost ROM:00003A6A ; 7 - fled ROM:00003A6A ; 8 - staredown ROM:00003A6A ; 9 - almost had it ROM:00003A6A ; 10 - "threw a pokeball" ROM:00003A6A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003A6A ; 12, 14 - pokeball flying ROM:00003A6A ; 13 - pokeball flying ROM:00003A6A ; 15 - catch animation plays ROM:00003A6A ; 16 - caught! ROM:00003A6A ; switcht: ROM:00003A6A ; cur slected poke name ROM:00003A6E rts ROM:00003A6E ; End of function set_gCurSubstateZ_to_1 ROM:00003A6E ROM:00003A70 ROM:00003A70 ; =============== S U B R O U T I N E ======================================= ROM:00003A70 ROM:00003A70 ROM:00003A70 recordPokeCaughtNoEventConsideration_WEIRD: ROM:00003A70 ; CODE XREF: interactionHandlerSwitchScreen+5Ap ROM:00003A70 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00003A70 ; gifted items view: this is item number that has focus and arrow ROM:00003A70 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003A70 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003A70 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003A74 beq locret_3B00:16 ROM:00003A78 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003A7C mov.w #0x30, e6 ; '0' ROM:00003A80 mov.w e6, r0 ROM:00003A82 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003A86 mov.w r0, r6 ROM:00003A88 mov.w r0, e0 ROM:00003A8A mov.w #0xCE8C, r0 ROM:00003A8E mov.w e6, r1 ROM:00003A90 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003A94 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003A94 ; battle: ROM:00003A94 ; 0 - battle opening animation ROM:00003A94 ; 1 - "XYZ appeared" message ROM:00003A94 ; 2 - "attack evade catch" directions shown ROM:00003A94 ; 3 - our action taken. details in gCurSubstateF ROM:00003A94 ; 4 - poke action taken. details in gCurSubstateF ROM:00003A94 ; 5 - "was too strong" ROM:00003A94 ; 6 - we lost ROM:00003A94 ; 7 - fled ROM:00003A94 ; 8 - staredown ROM:00003A94 ; 9 - almost had it ROM:00003A94 ; 10 - "threw a pokeball" ROM:00003A94 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003A94 ; 12, 14 - pokeball flying ROM:00003A94 ; 13 - pokeball flying ROM:00003A94 ; 15 - catch animation plays ROM:00003A94 ; 16 - caught! ROM:00003A94 ; switcht: ROM:00003A94 ; cur slected poke name ROM:00003A98 exts.w r0 ROM:00003A9A mov.w #0x10, e0 ROM:00003A9E mulxu.w e0, er0 ROM:00003AA0 add.w r6, r0 ROM:00003AA2 mov.w r0, e0 ROM:00003AA4 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00003AA4 ; gifted items view: this is item number that has focus and arrow ROM:00003AA4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003AA4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003AA4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003AA8 extu.w r1 ROM:00003AAA dec.w #1, r1 ROM:00003AAC mov.w #0x10, e1 ROM:00003AB0 mulxu.w e1, er1 ROM:00003AB2 mov.w #0x8F52, r0 ROM:00003AB6 add.w r1, r0 ROM:00003AB8 mov.w #0x10, r1 ROM:00003ABC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003AC0 mov.w e6, r1 ROM:00003AC2 mov.w r6, e0 ROM:00003AC4 mov.w #0xCE8C, r0 ROM:00003AC8 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00003ACC mov.w #0xBE, r0 ; '+' ROM:00003AD0 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003AD4 mov.w r0, r6 ROM:00003AD6 mov.w r0, e0 ROM:00003AD8 mov.w #0xBE, r1 ; '+' ROM:00003ADC mov.w #0x8F00, r0 ROM:00003AE0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003AE4 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00003AE4 ; gifted items view: this is item number that has focus and arrow ROM:00003AE4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003AE4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003AE4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003AE8 push.w r0 ROM:00003AEA mov.w #0x88, r0 ; 'ê' ROM:00003AEE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003AF2 mov.w r0, e0 ROM:00003AF4 mov.w r6, r0 ROM:00003AF6 sub.l er1, er1 ROM:00003AF8 mov.b #0xD, r1l ROM:00003AFA jsr logEvent:24 ; ( ROM:00003AFA ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00003AFA ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00003AFA ; r1l = eventTYpe ROM:00003AFA ; r1h = boolean isOnSpecialEventRoute ROM:00003AFA ; e1 = extraInfo (eg: item type) ROM:00003AFA ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00003AFA ; ) ROM:00003AFE adds #2, sp ROM:00003B00 ROM:00003B00 locret_3B00: ; CODE XREF: recordPokeCaughtNoEventConsideration_WEIRD+4j ROM:00003B00 rts ROM:00003B00 ; End of function recordPokeCaughtNoEventConsideration_WEIRD ROM:00003B00 ROM:00003B02 ROM:00003B02 ; =============== S U B R O U T I N E ======================================= ROM:00003B02 ROM:00003B02 ROM:00003B02 recordItemFoundNoEventConsideration_WEIRD: ROM:00003B02 ; CODE XREF: interactionHandlerSwitchScreen:loc_3BF4p ROM:00003B02 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003B06 mov.w #0xC, e6 ROM:00003B0A mov.w e6, r0 ROM:00003B0C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003B10 mov.w r0, r6 ROM:00003B12 mov.w r0, e0 ROM:00003B14 mov.w #0xCEBC, r0 ROM:00003B18 mov.w e6, r1 ROM:00003B1A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003B1E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003B1E ; battle: ROM:00003B1E ; 0 - battle opening animation ROM:00003B1E ; 1 - "XYZ appeared" message ROM:00003B1E ; 2 - "attack evade catch" directions shown ROM:00003B1E ; 3 - our action taken. details in gCurSubstateF ROM:00003B1E ; 4 - poke action taken. details in gCurSubstateF ROM:00003B1E ; 5 - "was too strong" ROM:00003B1E ; 6 - we lost ROM:00003B1E ; 7 - fled ROM:00003B1E ; 8 - staredown ROM:00003B1E ; 9 - almost had it ROM:00003B1E ; 10 - "threw a pokeball" ROM:00003B1E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003B1E ; 12, 14 - pokeball flying ROM:00003B1E ; 13 - pokeball flying ROM:00003B1E ; 15 - catch animation plays ROM:00003B1E ; 16 - caught! ROM:00003B1E ; switcht: ROM:00003B1E ; cur slected poke name ROM:00003B22 exts.w r0 ROM:00003B24 shll.w r0 ROM:00003B26 shll.w r0 ROM:00003B28 add.w r6, r0 ROM:00003B2A mov.w r0, e0 ROM:00003B2C mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00003B2C ; gifted items view: this is item number that has focus and arrow ROM:00003B2C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003B2C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003B2C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003B30 extu.w r1 ; item we got ROM:00003B32 shll.w r1 ; each item is 2 bytes ROM:00003B34 mov.w #0x8F8C, r0 ; items taht can be found base eeprom addr ROM:00003B38 add.w r1, r0 ROM:00003B3A mov.w #2, r1 ROM:00003B3E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003B42 mov.w e6, r1 ROM:00003B44 mov.w r6, e0 ROM:00003B46 mov.w #0xCEBC, r0 ROM:00003B4A jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00003B4E mov.w #0xBE, r0 ; '+' ROM:00003B52 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003B56 mov.w r0, r6 ROM:00003B58 mov.w r0, e0 ROM:00003B5A mov.w #0xBE, r1 ; '+' ROM:00003B5E mov.w #0x8F00, r0 ROM:00003B62 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003B66 sub.b r0l, r0l ROM:00003B68 push.w r0 ROM:00003B6A mov.w #0x88, r0 ; 'ê' ROM:00003B6E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003B72 mov.w r0, e0 ROM:00003B74 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00003B74 ; gifted items view: this is item number that has focus and arrow ROM:00003B74 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003B74 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003B74 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003B78 extu.w r1 ROM:00003B7A shll.w r1 ROM:00003B7C mov.w #0x8C, r0 ; 'î' ROM:00003B80 add.w r6, r0 ROM:00003B82 add.w r1, r0 ROM:00003B84 mov.w @er0, e1 ROM:00003B86 mov.w #0xB, r1 ROM:00003B8A mov.w r6, r0 ROM:00003B8C jsr logEvent:24 ; ( ROM:00003B8C ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00003B8C ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00003B8C ; r1l = eventTYpe ROM:00003B8C ; r1h = boolean isOnSpecialEventRoute ROM:00003B8C ; e1 = extraInfo (eg: item type) ROM:00003B8C ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00003B8C ; ) ROM:00003B90 adds #2, sp ROM:00003B92 rts ROM:00003B92 ; End of function recordItemFoundNoEventConsideration_WEIRD ROM:00003B92 ROM:00003B94 ROM:00003B94 ; =============== S U B R O U T I N E ======================================= ROM:00003B94 ROM:00003B94 ROM:00003B94 interactionHandlerSwitchScreen: ; CODE XREF: interactionHandler:case_0x07p ROM:00003B94 mov.b #4, r0l ROM:00003B96 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00003B96 ; // 0x02 - enter ROM:00003B96 ; // 0x04 - left ROM:00003B96 ; // 0x08 - right ROM:00003B9A mov.b r0l, r0l ROM:00003B9C beq loc_3BBC:8 ROM:00003B9E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003B9E ; battle: ROM:00003B9E ; 0 - battle opening animation ROM:00003B9E ; 1 - "XYZ appeared" message ROM:00003B9E ; 2 - "attack evade catch" directions shown ROM:00003B9E ; 3 - our action taken. details in gCurSubstateF ROM:00003B9E ; 4 - poke action taken. details in gCurSubstateF ROM:00003B9E ; 5 - "was too strong" ROM:00003B9E ; 6 - we lost ROM:00003B9E ; 7 - fled ROM:00003B9E ; 8 - staredown ROM:00003B9E ; 9 - almost had it ROM:00003B9E ; 10 - "threw a pokeball" ROM:00003B9E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003B9E ; 12, 14 - pokeball flying ROM:00003B9E ; 13 - pokeball flying ROM:00003B9E ; 15 - catch animation plays ROM:00003B9E ; 16 - caught! ROM:00003B9E ; switcht: ROM:00003B9E ; cur slected poke name ROM:00003BA2 bne loc_3BB0:8 ROM:00003BA4 jsr someStateVarShuffling:24 ROM:00003BA8 sub.b r0l, r0l ROM:00003BAA jsr setCurrentlyActiveView:24 ROM:00003BAE bra loc_3BCE:8 ROM:00003BB0 ; --------------------------------------------------------------------------- ROM:00003BB0 ROM:00003BB0 loc_3BB0: ; CODE XREF: interactionHandlerSwitchScreen+Ej ROM:00003BB0 dec.b r0l ROM:00003BB2 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003BB2 ; battle: ROM:00003BB2 ; 0 - battle opening animation ROM:00003BB2 ; 1 - "XYZ appeared" message ROM:00003BB2 ; 2 - "attack evade catch" directions shown ROM:00003BB2 ; 3 - our action taken. details in gCurSubstateF ROM:00003BB2 ; 4 - poke action taken. details in gCurSubstateF ROM:00003BB2 ; 5 - "was too strong" ROM:00003BB2 ; 6 - we lost ROM:00003BB2 ; 7 - fled ROM:00003BB2 ; 8 - staredown ROM:00003BB2 ; 9 - almost had it ROM:00003BB2 ; 10 - "threw a pokeball" ROM:00003BB2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003BB2 ; 12, 14 - pokeball flying ROM:00003BB2 ; 13 - pokeball flying ROM:00003BB2 ; 15 - catch animation plays ROM:00003BB2 ; 16 - caught! ROM:00003BB2 ; switcht: ROM:00003BB2 ; cur slected poke name ROM:00003BB6 mov.b #2, r0l ROM:00003BB8 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003BBC ROM:00003BBC loc_3BBC: ; CODE XREF: interactionHandlerSwitchScreen+8j ROM:00003BBC mov.b #8, r0l ROM:00003BBE jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00003BBE ; // 0x02 - enter ROM:00003BBE ; // 0x04 - left ROM:00003BBE ; // 0x08 - right ROM:00003BC2 mov.b r0l, r0l ROM:00003BC4 beq loc_3BDE:8 ROM:00003BC6 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003BC6 ; battle: ROM:00003BC6 ; 0 - battle opening animation ROM:00003BC6 ; 1 - "XYZ appeared" message ROM:00003BC6 ; 2 - "attack evade catch" directions shown ROM:00003BC6 ; 3 - our action taken. details in gCurSubstateF ROM:00003BC6 ; 4 - poke action taken. details in gCurSubstateF ROM:00003BC6 ; 5 - "was too strong" ROM:00003BC6 ; 6 - we lost ROM:00003BC6 ; 7 - fled ROM:00003BC6 ; 8 - staredown ROM:00003BC6 ; 9 - almost had it ROM:00003BC6 ; 10 - "threw a pokeball" ROM:00003BC6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003BC6 ; 12, 14 - pokeball flying ROM:00003BC6 ; 13 - pokeball flying ROM:00003BC6 ; 15 - catch animation plays ROM:00003BC6 ; 16 - caught! ROM:00003BC6 ; switcht: ROM:00003BC6 ; cur slected poke name ROM:00003BCA cmp.b #2, r0l ROM:00003BCC bne loc_3BD2:8 ROM:00003BCE ROM:00003BCE loc_3BCE: ; CODE XREF: interactionHandlerSwitchScreen+1Aj ROM:00003BCE mov.b #1, r0l ROM:00003BD0 bra loc_3C04:8 ROM:00003BD2 ; --------------------------------------------------------------------------- ROM:00003BD2 ROM:00003BD2 loc_3BD2: ; CODE XREF: interactionHandlerSwitchScreen+38j ROM:00003BD2 inc.b r0l ROM:00003BD4 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003BD4 ; battle: ROM:00003BD4 ; 0 - battle opening animation ROM:00003BD4 ; 1 - "XYZ appeared" message ROM:00003BD4 ; 2 - "attack evade catch" directions shown ROM:00003BD4 ; 3 - our action taken. details in gCurSubstateF ROM:00003BD4 ; 4 - poke action taken. details in gCurSubstateF ROM:00003BD4 ; 5 - "was too strong" ROM:00003BD4 ; 6 - we lost ROM:00003BD4 ; 7 - fled ROM:00003BD4 ; 8 - staredown ROM:00003BD4 ; 9 - almost had it ROM:00003BD4 ; 10 - "threw a pokeball" ROM:00003BD4 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003BD4 ; 12, 14 - pokeball flying ROM:00003BD4 ; 13 - pokeball flying ROM:00003BD4 ; 15 - catch animation plays ROM:00003BD4 ; 16 - caught! ROM:00003BD4 ; switcht: ROM:00003BD4 ; cur slected poke name ROM:00003BD8 mov.b #2, r0l ROM:00003BDA jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003BDE ROM:00003BDE loc_3BDE: ; CODE XREF: interactionHandlerSwitchScreen+30j ROM:00003BDE mov.b #2, r0l ROM:00003BE0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00003BE0 ; // 0x02 - enter ROM:00003BE0 ; // 0x04 - left ROM:00003BE0 ; // 0x08 - right ROM:00003BE4 mov.b r0l, r0l ROM:00003BE6 beq locret_3C08:8 ROM:00003BE8 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00003BE8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003BE8 ; ItemScreenHandler: ROM:00003BE8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003BE8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003BE8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003BE8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003BE8 ; 0x0010 - light grey pokeball ROM:00003BE8 ; 0x0020 - tiny map icon ROM:00003BE8 ; 0x0040 - found item #0 (slot nonempty) ROM:00003BE8 ; 0x0080 - found item #1 (slot nonempty) ROM:00003BE8 ; 0x0100 - found item #2 (slot nonempty) ROM:00003BE8 ; 0x0200 - grey item icon ROM:00003BE8 ; ItemRXed - what was RXed ROM:00003BE8 ; 0 - event pokemon ROM:00003BE8 ; 1 - special route ROM:00003BE8 ; 2 - item ROM:00003BE8 ; 3 - special ROM:00003BE8 ; 4 - stamp: heart ROM:00003BE8 ; 5 - stamp: spade ROM:00003BE8 ; 6 - stamp: diamond ROM:00003BE8 ; 7 - stamp: club ROM:00003BE8 ; switch: ROM:00003BE8 ; zero - pokemon does ROM:00003BE8 ; nonzero - item needs to be switched ROM:00003BE8 ; item RXed: ROM:00003BE8 ; what sort of thing was RXed: item, map, route, etc ROM:00003BEC bne loc_3BF4:8 ROM:00003BEE jsr recordPokeCaughtNoEventConsideration_WEIRD:24 ROM:00003BF2 bra loc_3BF8:8 ROM:00003BF4 ; --------------------------------------------------------------------------- ROM:00003BF4 ROM:00003BF4 loc_3BF4: ; CODE XREF: interactionHandlerSwitchScreen+58j ROM:00003BF4 jsr recordItemFoundNoEventConsideration_WEIRD:24 ROM:00003BF8 ROM:00003BF8 loc_3BF8: ; CODE XREF: interactionHandlerSwitchScreen+5Ej ROM:00003BF8 jsr someStateVarShuffling:24 ROM:00003BFC sub.b r0l, r0l ROM:00003BFE jsr setCurrentlyActiveView:24 ROM:00003C02 sub.b r0l, r0l ROM:00003C04 ROM:00003C04 loc_3C04: ; CODE XREF: interactionHandlerSwitchScreen+3Cj ROM:00003C04 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00003C08 ROM:00003C08 locret_3C08: ; CODE XREF: interactionHandlerSwitchScreen+52j ROM:00003C08 rts ROM:00003C08 ; End of function interactionHandlerSwitchScreen ROM:00003C08 ROM:00003C0A ROM:00003C0A ; =============== S U B R O U T I N E ======================================= ROM:00003C0A ROM:00003C0A ROM:00003C0A drawCurSelectedPokeNameForSwitchScreen: ; CODE XREF: drawSwitchScreen+D0p ROM:00003C0A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003C0E mov.w #0x40, r0 ; '@' ROM:00003C12 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003C16 mov.w r0, r5 ROM:00003C18 mov.w r0, e0 ROM:00003C1A mov.w #0x8F52, r0 ; pokemon avilable on route struct ROM:00003C1E mov.w #0x30, r1 ; '0' ROM:00003C22 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003C26 mov.w r5, r0 ROM:00003C28 add.w #0x30, r0 ; '0' ROM:00003C2C mov.w r0, e0 ROM:00003C2E mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:00003C2E ; battle: ROM:00003C2E ; 0 - battle opening animation ROM:00003C2E ; 1 - "XYZ appeared" message ROM:00003C2E ; 2 - "attack evade catch" directions shown ROM:00003C2E ; 3 - our action taken. details in gCurSubstateF ROM:00003C2E ; 4 - poke action taken. details in gCurSubstateF ROM:00003C2E ; 5 - "was too strong" ROM:00003C2E ; 6 - we lost ROM:00003C2E ; 7 - fled ROM:00003C2E ; 8 - staredown ROM:00003C2E ; 9 - almost had it ROM:00003C2E ; 10 - "threw a pokeball" ROM:00003C2E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003C2E ; 12, 14 - pokeball flying ROM:00003C2E ; 13 - pokeball flying ROM:00003C2E ; 15 - catch animation plays ROM:00003C2E ; 16 - caught! ROM:00003C2E ; switcht: ROM:00003C2E ; cur slected poke name ROM:00003C32 exts.w r1 ROM:00003C34 mov.w #0x10, e1 ROM:00003C38 mulxu.w e1, er1 ROM:00003C3A mov.w #0xCE8C, r0 ; 3x pokes caught this walk (wild poke struct copy) ROM:00003C3E add.w r1, r0 ROM:00003C40 mov.w #0x10, r1 ROM:00003C44 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003C48 sub.b r6l, r6l ROM:00003C4A ROM:00003C4A loc_3C4A: ; CODE XREF: drawCurSelectedPokeNameForSwitchScreen+68j ROM:00003C4A extu.w r6 ROM:00003C4C mov.w r6, r0 ROM:00003C4E mov.w #0x10, e0 ROM:00003C52 mulxu.w e0, er0 ROM:00003C54 add.w r5, r0 ROM:00003C56 mov.w @(0x30:16,er5), e0 ROM:00003C5A mov.w @er0, r0 ROM:00003C5C cmp.w r0, e0 ROM:00003C5E bne loc_3C6E:8 ROM:00003C60 mov.b r6l, r1l ROM:00003C62 mov.b #7, r1h ROM:00003C64 mov.w #0x3000, r0 ROM:00003C68 jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00003C68 ; ROM:00003C68 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:00003C6C bra locret_3C74:8 ROM:00003C6E ; --------------------------------------------------------------------------- ROM:00003C6E ROM:00003C6E loc_3C6E: ; CODE XREF: drawCurSelectedPokeNameForSwitchScreen+54j ROM:00003C6E inc.b r6l ROM:00003C70 cmp.b #3, r6l ROM:00003C72 bcs loc_3C4A:8 ROM:00003C74 ROM:00003C74 locret_3C74: ; CODE XREF: drawCurSelectedPokeNameForSwitchScreen+62j ROM:00003C74 rts ROM:00003C74 ; End of function drawCurSelectedPokeNameForSwitchScreen ROM:00003C74 ROM:00003C76 ROM:00003C76 ; =============== S U B R O U T I N E ======================================= ROM:00003C76 ROM:00003C76 ROM:00003C76 drawCurSelectedItemNameForSwitchScreen: ; CODE XREF: drawSwitchScreen:loc_3DAEp ROM:00003C76 possibleItemsBuf = r5 ROM:00003C76 subs #4, sp ROM:00003C78 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003C7C mov.w #0x14, r0 ROM:00003C80 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003C84 mov.w r0, possibleItemsBuf ROM:00003C86 mov.w r7, e0 ROM:00003C88 mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:00003C88 ; battle: ROM:00003C88 ; 0 - battle opening animation ROM:00003C88 ; 1 - "XYZ appeared" message ROM:00003C88 ; 2 - "attack evade catch" directions shown ROM:00003C88 ; 3 - our action taken. details in gCurSubstateF ROM:00003C88 ; 4 - poke action taken. details in gCurSubstateF ROM:00003C88 ; 5 - "was too strong" ROM:00003C88 ; 6 - we lost ROM:00003C88 ; 7 - fled ROM:00003C88 ; 8 - staredown ROM:00003C88 ; 9 - almost had it ROM:00003C88 ; 10 - "threw a pokeball" ROM:00003C88 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003C88 ; 12, 14 - pokeball flying ROM:00003C88 ; 13 - pokeball flying ROM:00003C88 ; 15 - catch animation plays ROM:00003C88 ; 16 - caught! ROM:00003C88 ; switcht: ROM:00003C88 ; cur slected poke name ROM:00003C8C exts.w r1 ROM:00003C8E shll.w r1 ROM:00003C90 shll.w r1 ROM:00003C92 mov.w #0xCEBC, r0 ; 3x items gotten during this walk. each 4 bytes. first 2 is item type, second unknown ROM:00003C96 add.w r1, r0 ROM:00003C98 mov.w #4, r1 ROM:00003C9C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003CA0 mov.w #0x8F8C, r0 ROM:00003CA4 mov.w #0x14, r1 ROM:00003CA8 mov.w possibleItemsBuf, e0 ; read all posible to find items ROM:00003CAA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003CAE sub.b r6l, r6l ROM:00003CB0 ROM:00003CB0 loc_3CB0: ; CODE XREF: drawCurSelectedItemNameForSwitchScreen+5Cj ROM:00003CB0 extu.w r6 ROM:00003CB2 mov.w r6, r0 ROM:00003CB4 shll.w r0 ROM:00003CB6 add.w possibleItemsBuf, r0 ROM:00003CB8 mov.w @sp, e0 ; item type in the next item slot ROM:00003CBA mov.w @er0, r0 ; compare to this item type ROM:00003CBC cmp.w r0, e0 ROM:00003CBE bne not_this_item:8 ROM:00003CC0 ROM:00003CC0 found_item: ; itemIdx // in possibleToFindItems[] ROM:00003CC0 mov.b r6l, r1l ROM:00003CC2 mov.b #0xF, r1h ROM:00003CC4 mov.w #0x3000, r0 ROM:00003CC8 jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00003CCC bra loc_3CD4:8 ROM:00003CCE ; --------------------------------------------------------------------------- ROM:00003CCE ROM:00003CCE not_this_item: ; CODE XREF: drawCurSelectedItemNameForSwitchScreen+48j ROM:00003CCE inc.b r6l ROM:00003CD0 cmp.b #0xA, r6l ROM:00003CD2 bcs loc_3CB0:8 ROM:00003CD4 ROM:00003CD4 loc_3CD4: ; CODE XREF: drawCurSelectedItemNameForSwitchScreen+56j ROM:00003CD4 adds #4, sp ROM:00003CD6 rts ROM:00003CD6 ; End of function drawCurSelectedItemNameForSwitchScreen ROM:00003CD6 ROM:00003CD8 ROM:00003CD8 ; =============== S U B R O U T I N E ======================================= ROM:00003CD8 ROM:00003CD8 ; used to pick what to do when already have 3 pokemon or 3 items and another gets added ROM:00003CD8 ROM:00003CD8 drawSwitchScreen: ; CODE XREF: maybe_viewDoDisplay:case__0x07p ROM:00003CD8 val_0x280 = r5 ROM:00003CD8 mov.w #drawImageToScreen, r4 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003CDC jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003CE0 mov.w #0x180, r0 ROM:00003CE4 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003CE8 mov.w r0, r6 ROM:00003CEA mov.w #0x280, val_0x280 ROM:00003CEE mov.w r0, e0 ROM:00003CF0 mov.w #0x378, r0 ROM:00003CF4 add.w val_0x280, r0 ; 0x05F8 = "return" icon for returning to main activity picker ROM:00003CF6 mov.w #0x20, r1 ; ' ' ROM:00003CFA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003CFE mov.w r6, e0 ROM:00003D00 mov.w #0x1008, r1 ROM:00003D04 sub.w r0, r0 ROM:00003D06 jsr @er4 ; drawImageToScreen() ROM:00003D08 mov.w #0x88B0, r0 ROM:00003D0C add.w val_0x280, r0 ; 0x8B30 = "Switch?" string 80x16 ROM:00003D0E mov.w #0x140, r1 ROM:00003D12 mov.w r6, e0 ROM:00003D14 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003D18 mov.w r6, e0 ROM:00003D1A mov.w #0x1050, r1 ROM:00003D1E mov.w #8, r0 ROM:00003D22 jsr @er4 ; drawImageToScreen() ROM:00003D24 mov.w #0x2A8, r0 ROM:00003D28 add.w val_0x280, r0 ; 0x528 - down arrows images (for animation) two. 8x8 each ROM:00003D2A mov.w #0x20, r1 ; ' ' ROM:00003D2E mov.w r6, e0 ROM:00003D30 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003D34 mov.b @curUiFlags:16, r0l ; bits: ROM:00003D34 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00003D34 ; 0x02 - slower animation frame ROM:00003D38 and.b #1, r0l ROM:00003D3A extu.w r0 ROM:00003D3C mov.w #0x10, e0 ROM:00003D40 mulxu.w e0, er0 ROM:00003D42 add.w r6, r0 ROM:00003D44 mov.w r0, e0 ROM:00003D46 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003D46 ; battle: ROM:00003D46 ; 0 - battle opening animation ROM:00003D46 ; 1 - "XYZ appeared" message ROM:00003D46 ; 2 - "attack evade catch" directions shown ROM:00003D46 ; 3 - our action taken. details in gCurSubstateF ROM:00003D46 ; 4 - poke action taken. details in gCurSubstateF ROM:00003D46 ; 5 - "was too strong" ROM:00003D46 ; 6 - we lost ROM:00003D46 ; 7 - fled ROM:00003D46 ; 8 - staredown ROM:00003D46 ; 9 - almost had it ROM:00003D46 ; 10 - "threw a pokeball" ROM:00003D46 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003D46 ; 12, 14 - pokeball flying ROM:00003D46 ; 13 - pokeball flying ROM:00003D46 ; 15 - catch animation plays ROM:00003D46 ; 16 - caught! ROM:00003D46 ; switcht: ROM:00003D46 ; cur slected poke name ROM:00003D4A mov.b #0x14, r0h ROM:00003D4C mulxu.b r0h, r0 ROM:00003D4E add.b #0x18, r0l ROM:00003D50 mov.w #0x808, r1 ROM:00003D54 mov.b #0x18, r0h ROM:00003D56 jsr @er4 ; drawImageToScreen() ROM:00003D58 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00003D58 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003D58 ; ItemScreenHandler: ROM:00003D58 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003D58 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003D58 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003D58 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003D58 ; 0x0010 - light grey pokeball ROM:00003D58 ; 0x0020 - tiny map icon ROM:00003D58 ; 0x0040 - found item #0 (slot nonempty) ROM:00003D58 ; 0x0080 - found item #1 (slot nonempty) ROM:00003D58 ; 0x0100 - found item #2 (slot nonempty) ROM:00003D58 ; 0x0200 - grey item icon ROM:00003D58 ; ItemRXed - what was RXed ROM:00003D58 ; 0 - event pokemon ROM:00003D58 ; 1 - special route ROM:00003D58 ; 2 - item ROM:00003D58 ; 3 - special ROM:00003D58 ; 4 - stamp: heart ROM:00003D58 ; 5 - stamp: spade ROM:00003D58 ; 6 - stamp: diamond ROM:00003D58 ; 7 - stamp: club ROM:00003D58 ; switch: ROM:00003D58 ; zero - pokemon does ROM:00003D58 ; nonzero - item needs to be switched ROM:00003D58 ; item RXed: ROM:00003D58 ; what sort of thing was RXed: item, map, route, etc ROM:00003D5C bne loc_3D64:8 ROM:00003D5E mov.w #0x1E0, r0 ; 0x460 - pokeball 8x8 ROM:00003D62 bra loc_3D68:8 ROM:00003D64 ; --------------------------------------------------------------------------- ROM:00003D64 ROM:00003D64 loc_3D64: ; CODE XREF: drawSwitchScreen+84j ROM:00003D64 mov.w #0x208, r0 ; item symbol (normal contrast) 8x8 ROM:00003D68 ROM:00003D68 loc_3D68: ; CODE XREF: drawSwitchScreen+8Aj ROM:00003D68 add.w val_0x280, r0 ROM:00003D6A mov.w #0x10, r1 ROM:00003D6E mov.w r6, e0 ROM:00003D70 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003D74 mov.w r6, e0 ROM:00003D76 mov.w #0x808, r1 ROM:00003D7A mov.w #0x2018, r0 ROM:00003D7E jsr @er4 ; drawImageToScreen() ROM:00003D80 mov.w r6, e0 ROM:00003D82 mov.w #0x808, r1 ROM:00003D86 mov.w #0x202C, r0 ROM:00003D8A jsr @er4 ; drawImageToScreen() ROM:00003D8C mov.w r6, e0 ROM:00003D8E mov.w #0x808, r1 ROM:00003D92 mov.w #0x2040, r0 ROM:00003D96 jsr @er4 ; drawImageToScreen() ROM:00003D98 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003D98 ; battle: ROM:00003D98 ; 0 - battle opening animation ROM:00003D98 ; 1 - "XYZ appeared" message ROM:00003D98 ; 2 - "attack evade catch" directions shown ROM:00003D98 ; 3 - our action taken. details in gCurSubstateF ROM:00003D98 ; 4 - poke action taken. details in gCurSubstateF ROM:00003D98 ; 5 - "was too strong" ROM:00003D98 ; 6 - we lost ROM:00003D98 ; 7 - fled ROM:00003D98 ; 8 - staredown ROM:00003D98 ; 9 - almost had it ROM:00003D98 ; 10 - "threw a pokeball" ROM:00003D98 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003D98 ; 12, 14 - pokeball flying ROM:00003D98 ; 13 - pokeball flying ROM:00003D98 ; 15 - catch animation plays ROM:00003D98 ; 16 - caught! ROM:00003D98 ; switcht: ROM:00003D98 ; cur slected poke name ROM:00003D9C blt locret_3DBA:8 ROM:00003D9E cmp.b #2, r0l ROM:00003DA0 bgt locret_3DBA:8 ROM:00003DA2 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00003DA2 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003DA2 ; ItemScreenHandler: ROM:00003DA2 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003DA2 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003DA2 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003DA2 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003DA2 ; 0x0010 - light grey pokeball ROM:00003DA2 ; 0x0020 - tiny map icon ROM:00003DA2 ; 0x0040 - found item #0 (slot nonempty) ROM:00003DA2 ; 0x0080 - found item #1 (slot nonempty) ROM:00003DA2 ; 0x0100 - found item #2 (slot nonempty) ROM:00003DA2 ; 0x0200 - grey item icon ROM:00003DA2 ; ItemRXed - what was RXed ROM:00003DA2 ; 0 - event pokemon ROM:00003DA2 ; 1 - special route ROM:00003DA2 ; 2 - item ROM:00003DA2 ; 3 - special ROM:00003DA2 ; 4 - stamp: heart ROM:00003DA2 ; 5 - stamp: spade ROM:00003DA2 ; 6 - stamp: diamond ROM:00003DA2 ; 7 - stamp: club ROM:00003DA2 ; switch: ROM:00003DA2 ; zero - pokemon does ROM:00003DA2 ; nonzero - item needs to be switched ROM:00003DA2 ; item RXed: ROM:00003DA2 ; what sort of thing was RXed: item, map, route, etc ROM:00003DA6 bne loc_3DAE:8 ROM:00003DA8 jsr drawCurSelectedPokeNameForSwitchScreen:24 ROM:00003DAC bra loc_3DB2:8 ROM:00003DAE ; --------------------------------------------------------------------------- ROM:00003DAE ROM:00003DAE loc_3DAE: ; CODE XREF: drawSwitchScreen+CEj ROM:00003DAE jsr drawCurSelectedItemNameForSwitchScreen:24 ROM:00003DB2 ROM:00003DB2 loc_3DB2: ; CODE XREF: drawSwitchScreen+D4j ROM:00003DB2 mov.w #0x58, r0 ; 'X' ROM:00003DB6 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00003DBA ROM:00003DBA locret_3DBA: ; CODE XREF: drawSwitchScreen+C4j ROM:00003DBA ; drawSwitchScreen+C8j ROM:00003DBA rts ROM:00003DBA ; End of function drawSwitchScreen ROM:00003DBA ROM:00003DBC ROM:00003DBC ; =============== S U B R O U T I N E ======================================= ROM:00003DBC ROM:00003DBC ROM:00003DBC drawBallFropFromTopOfScreen: ; CODE XREF: drawPokemonArrivedAnimation:loc_415Cp ROM:00003DBC ; drawSomethingReceivedAnimation:loc_42B4p ROM:00003DBC ROM:00003DBC ; FUNCTION CHUNK AT ROM:00004534 SIZE 00000008 BYTES ROM:00003DBC ROM:00003DBC push.w r2 ROM:00003DBE push.w r5 ROM:00003DC0 push.w r6 ROM:00003DC2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003DC6 mov.w #0x180, r0 ROM:00003DCA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003DCE mov.w r0, r6 ROM:00003DD0 mov.b @currentlyActiveView:16, r0l ROM:00003DD4 cmp.b #0x11, r0l ROM:00003DD6 bne loc_3DDE:8 ROM:00003DD8 mov.w #0x460, r5 ; 0x0460 = pokeball 8x8 ROM:00003DDC bra loc_3DE2:8 ROM:00003DDE ; --------------------------------------------------------------------------- ROM:00003DDE ROM:00003DDE loc_3DDE: ; CODE XREF: drawBallFropFromTopOfScreen+1Aj ROM:00003DDE mov.w #0x2480, r5 ; 0x2480 = blank icon 8x8 ROM:00003DE2 ROM:00003DE2 loc_3DE2: ; CODE XREF: drawBallFropFromTopOfScreen+20j ROM:00003DE2 mov.w r5, r0 ROM:00003DE4 mov.w #0x10, r1 ROM:00003DE8 mov.w r6, e0 ROM:00003DEA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003DEE mov.w r6, e0 ROM:00003DF0 mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:00003DF0 ; battle: ROM:00003DF0 ; 0 - battle opening animation ROM:00003DF0 ; 1 - "XYZ appeared" message ROM:00003DF0 ; 2 - "attack evade catch" directions shown ROM:00003DF0 ; 3 - our action taken. details in gCurSubstateF ROM:00003DF0 ; 4 - poke action taken. details in gCurSubstateF ROM:00003DF0 ; 5 - "was too strong" ROM:00003DF0 ; 6 - we lost ROM:00003DF0 ; 7 - fled ROM:00003DF0 ; 8 - staredown ROM:00003DF0 ; 9 - almost had it ROM:00003DF0 ; 10 - "threw a pokeball" ROM:00003DF0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003DF0 ; 12, 14 - pokeball flying ROM:00003DF0 ; 13 - pokeball flying ROM:00003DF0 ; 15 - catch animation plays ROM:00003DF0 ; 16 - caught! ROM:00003DF0 ; switcht: ROM:00003DF0 ; cur slected poke name ROM:00003DF4 extu.w r1 ROM:00003DF6 mov.b @(BALL_DROP_Y_COORD,er1), r0h ROM:00003DFA mov.w #0x808, r1 ROM:00003DFE mov.b #0x2C, r0l ; ',' ROM:00003E00 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003E04 mov.b #3, r0l ROM:00003E06 push.w r0 ROM:00003E08 mov.w #0x860, r1 ROM:00003E0C sub.w r0, r0 ROM:00003E0E jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003E12 adds #2, sp ROM:00003E14 mov.b #3, r0l ROM:00003E16 push.w r0 ROM:00003E18 mov.w #0x860, r1 ROM:00003E1C mov.w #0x3800, r0 ROM:00003E20 jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003E24 adds #2, sp ROM:00003E26 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003E26 ; battle: ROM:00003E26 ; 0 - battle opening animation ROM:00003E26 ; 1 - "XYZ appeared" message ROM:00003E26 ; 2 - "attack evade catch" directions shown ROM:00003E26 ; 3 - our action taken. details in gCurSubstateF ROM:00003E26 ; 4 - poke action taken. details in gCurSubstateF ROM:00003E26 ; 5 - "was too strong" ROM:00003E26 ; 6 - we lost ROM:00003E26 ; 7 - fled ROM:00003E26 ; 8 - staredown ROM:00003E26 ; 9 - almost had it ROM:00003E26 ; 10 - "threw a pokeball" ROM:00003E26 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003E26 ; 12, 14 - pokeball flying ROM:00003E26 ; 13 - pokeball flying ROM:00003E26 ; 15 - catch animation plays ROM:00003E26 ; 16 - caught! ROM:00003E26 ; switcht: ROM:00003E26 ; cur slected poke name ROM:00003E2A inc.b r0l ROM:00003E2C mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003E2C ; battle: ROM:00003E2C ; 0 - battle opening animation ROM:00003E2C ; 1 - "XYZ appeared" message ROM:00003E2C ; 2 - "attack evade catch" directions shown ROM:00003E2C ; 3 - our action taken. details in gCurSubstateF ROM:00003E2C ; 4 - poke action taken. details in gCurSubstateF ROM:00003E2C ; 5 - "was too strong" ROM:00003E2C ; 6 - we lost ROM:00003E2C ; 7 - fled ROM:00003E2C ; 8 - staredown ROM:00003E2C ; 9 - almost had it ROM:00003E2C ; 10 - "threw a pokeball" ROM:00003E2C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003E2C ; 12, 14 - pokeball flying ROM:00003E2C ; 13 - pokeball flying ROM:00003E2C ; 15 - catch animation plays ROM:00003E2C ; 16 - caught! ROM:00003E2C ; switcht: ROM:00003E2C ; cur slected poke name ROM:00003E30 jmp epilogue_common_pop_r6_r5_r2:24 ROM:00003E30 ; End of function drawBallFropFromTopOfScreen ROM:00003E30 ROM:00003E34 ROM:00003E34 ; =============== S U B R O U T I N E ======================================= ROM:00003E34 ROM:00003E34 ROM:00003E34 drawPokeballInMiddleOfScreen: ; CODE XREF: drawSomethingReceivedAnimation:loc_42BAp ROM:00003E34 push.w r2 ROM:00003E36 push.w r5 ROM:00003E38 push.w r6 ROM:00003E3A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003E3E mov.w #0x180, r0 ROM:00003E42 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003E46 mov.w r0, r6 ROM:00003E48 mov.w #0x460, r5 ; pokeball 8x8 ROM:00003E4C mov.w r0, e0 ROM:00003E4E mov.w r5, r0 ROM:00003E50 mov.w #0x10, r1 ROM:00003E54 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003E58 mov.w r6, e0 ROM:00003E5A mov.w #0x808, r1 ROM:00003E5E mov.w #0x102C, r0 ROM:00003E62 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003E66 mov.w #0x2040, r5 ; a little 5-pointed star image for when we catch something 8x8 ROM:00003E6A mov.w r5, r0 ROM:00003E6C mov.w #0x10, r1 ROM:00003E70 mov.w r6, e0 ROM:00003E72 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003E76 mov.b @gCurSubstateZ:16, r5l ; different per mode ROM:00003E76 ; battle: ROM:00003E76 ; 0 - battle opening animation ROM:00003E76 ; 1 - "XYZ appeared" message ROM:00003E76 ; 2 - "attack evade catch" directions shown ROM:00003E76 ; 3 - our action taken. details in gCurSubstateF ROM:00003E76 ; 4 - poke action taken. details in gCurSubstateF ROM:00003E76 ; 5 - "was too strong" ROM:00003E76 ; 6 - we lost ROM:00003E76 ; 7 - fled ROM:00003E76 ; 8 - staredown ROM:00003E76 ; 9 - almost had it ROM:00003E76 ; 10 - "threw a pokeball" ROM:00003E76 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003E76 ; 12, 14 - pokeball flying ROM:00003E76 ; 13 - pokeball flying ROM:00003E76 ; 15 - catch animation plays ROM:00003E76 ; 16 - caught! ROM:00003E76 ; switcht: ROM:00003E76 ; cur slected poke name ROM:00003E7A extu.w r5 ROM:00003E7C shll.w r5 ROM:00003E7E add.w #item_screen_locs, r5 ROM:00003E82 mov.w r6, e0 ROM:00003E84 mov.w #0x808, r1 ROM:00003E88 mov.b @(1:16,er5), r0h ROM:00003E8C mov.b @er5, r0l ROM:00003E8E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003E92 mov.b #3, r0l ROM:00003E94 push.w r0 ROM:00003E96 mov.w #0x860, r1 ROM:00003E9A sub.w r0, r0 ROM:00003E9C jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003EA0 adds #2, sp ROM:00003EA2 mov.b #3, r0l ROM:00003EA4 push.w r0 ROM:00003EA6 mov.w #0x860, r1 ROM:00003EAA mov.w #0x3800, r0 ROM:00003EAE jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003EB2 adds #2, sp ROM:00003EB4 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003EB4 ; battle: ROM:00003EB4 ; 0 - battle opening animation ROM:00003EB4 ; 1 - "XYZ appeared" message ROM:00003EB4 ; 2 - "attack evade catch" directions shown ROM:00003EB4 ; 3 - our action taken. details in gCurSubstateF ROM:00003EB4 ; 4 - poke action taken. details in gCurSubstateF ROM:00003EB4 ; 5 - "was too strong" ROM:00003EB4 ; 6 - we lost ROM:00003EB4 ; 7 - fled ROM:00003EB4 ; 8 - staredown ROM:00003EB4 ; 9 - almost had it ROM:00003EB4 ; 10 - "threw a pokeball" ROM:00003EB4 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003EB4 ; 12, 14 - pokeball flying ROM:00003EB4 ; 13 - pokeball flying ROM:00003EB4 ; 15 - catch animation plays ROM:00003EB4 ; 16 - caught! ROM:00003EB4 ; switcht: ROM:00003EB4 ; cur slected poke name ROM:00003EB8 inc.b r0l ROM:00003EBA cmp.b #2, r0l ROM:00003EBC bls loc_3EC6:8 ROM:00003EBE mov.b #1, r0l ROM:00003EC0 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00003EC0 ; gifted items view: this is item number that has focus and arrow ROM:00003EC0 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00003EC0 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00003EC0 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00003EC4 sub.b r0l, r0l ROM:00003EC6 ROM:00003EC6 loc_3EC6: ; CODE XREF: drawPokeballInMiddleOfScreen+88j ROM:00003EC6 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003EC6 ; battle: ROM:00003EC6 ; 0 - battle opening animation ROM:00003EC6 ; 1 - "XYZ appeared" message ROM:00003EC6 ; 2 - "attack evade catch" directions shown ROM:00003EC6 ; 3 - our action taken. details in gCurSubstateF ROM:00003EC6 ; 4 - poke action taken. details in gCurSubstateF ROM:00003EC6 ; 5 - "was too strong" ROM:00003EC6 ; 6 - we lost ROM:00003EC6 ; 7 - fled ROM:00003EC6 ; 8 - staredown ROM:00003EC6 ; 9 - almost had it ROM:00003EC6 ; 10 - "threw a pokeball" ROM:00003EC6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003EC6 ; 12, 14 - pokeball flying ROM:00003EC6 ; 13 - pokeball flying ROM:00003EC6 ; 15 - catch animation plays ROM:00003EC6 ; 16 - caught! ROM:00003EC6 ; switcht: ROM:00003EC6 ; cur slected poke name ROM:00003ECA jmp epilogue_common_pop_r6_r5_r2:24 ROM:00003ECA ; End of function drawPokeballInMiddleOfScreen ROM:00003ECA ROM:00003ECE ROM:00003ECE ; =============== S U B R O U T I N E ======================================= ROM:00003ECE ROM:00003ECE ; literally same as drawCloudWithBarsOnTopAndBottomOfScreen ROM:00003ECE ROM:00003ECE drawCloudWithBarsOnTopAndBottomOfScreen2: ROM:00003ECE ; CODE XREF: drawPokemonArrivedAnimation:loc_4162p ROM:00003ECE ; drawSomethingReceivedAnimation:loc_42C0p ROM:00003ECE push.w r2 ROM:00003ED0 push.w r5 ROM:00003ED2 push.w r6 ROM:00003ED4 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003ED8 mov.w #0x180, r0 ROM:00003EDC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003EE0 mov.w r0, r6 ROM:00003EE2 mov.w #0x1F70, r5 ; cloud "for pokemon appeared" 32x24 ROM:00003EE6 mov.w r0, e0 ROM:00003EE8 mov.w r5, r0 ROM:00003EEA mov.w #0xC0, r1 ; '+' ROM:00003EEE jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00003EF2 mov.w r6, e0 ROM:00003EF4 mov.w #0x1820, r1 ROM:00003EF8 mov.w #0x1020, r0 ROM:00003EFC jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00003F00 mov.b #3, r0l ROM:00003F02 push.w r0 ROM:00003F04 mov.w #0x860, r1 ROM:00003F08 sub.w r0, r0 ROM:00003F0A jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003F0E adds #2, sp ROM:00003F10 mov.b #3, r0l ROM:00003F12 push.w r0 ROM:00003F14 mov.w #0x860, r1 ROM:00003F18 mov.w #0x3800, r0 ROM:00003F1C jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003F20 adds #2, sp ROM:00003F22 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003F22 ; battle: ROM:00003F22 ; 0 - battle opening animation ROM:00003F22 ; 1 - "XYZ appeared" message ROM:00003F22 ; 2 - "attack evade catch" directions shown ROM:00003F22 ; 3 - our action taken. details in gCurSubstateF ROM:00003F22 ; 4 - poke action taken. details in gCurSubstateF ROM:00003F22 ; 5 - "was too strong" ROM:00003F22 ; 6 - we lost ROM:00003F22 ; 7 - fled ROM:00003F22 ; 8 - staredown ROM:00003F22 ; 9 - almost had it ROM:00003F22 ; 10 - "threw a pokeball" ROM:00003F22 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003F22 ; 12, 14 - pokeball flying ROM:00003F22 ; 13 - pokeball flying ROM:00003F22 ; 15 - catch animation plays ROM:00003F22 ; 16 - caught! ROM:00003F22 ; switcht: ROM:00003F22 ; cur slected poke name ROM:00003F26 bne loc_3F2E:8 ROM:00003F28 inc.b r0l ROM:00003F2A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003F2A ; battle: ROM:00003F2A ; 0 - battle opening animation ROM:00003F2A ; 1 - "XYZ appeared" message ROM:00003F2A ; 2 - "attack evade catch" directions shown ROM:00003F2A ; 3 - our action taken. details in gCurSubstateF ROM:00003F2A ; 4 - poke action taken. details in gCurSubstateF ROM:00003F2A ; 5 - "was too strong" ROM:00003F2A ; 6 - we lost ROM:00003F2A ; 7 - fled ROM:00003F2A ; 8 - staredown ROM:00003F2A ; 9 - almost had it ROM:00003F2A ; 10 - "threw a pokeball" ROM:00003F2A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003F2A ; 12, 14 - pokeball flying ROM:00003F2A ; 13 - pokeball flying ROM:00003F2A ; 15 - catch animation plays ROM:00003F2A ; 16 - caught! ROM:00003F2A ; switcht: ROM:00003F2A ; cur slected poke name ROM:00003F2E ROM:00003F2E loc_3F2E: ; CODE XREF: drawCloudWithBarsOnTopAndBottomOfScreen2+58j ROM:00003F2E jmp epilogue_common_pop_r6_r5_r2:24 ROM:00003F2E ; End of function drawCloudWithBarsOnTopAndBottomOfScreen2 ROM:00003F2E ROM:00003F32 ROM:00003F32 ; =============== S U B R O U T I N E ======================================= ROM:00003F32 ROM:00003F32 ROM:00003F32 drawLargePokemonImageWithBarsOnTopAndBottomOfScreen: ROM:00003F32 ; CODE XREF: drawPokemonArrivedAnimation:loc_4168p ROM:00003F32 ROM:00003F32 ; FUNCTION CHUNK AT ROM:0000453C SIZE 0000000A BYTES ROM:00003F32 ROM:00003F32 push.w r2 ROM:00003F34 push.l er3 ROM:00003F38 push.w r5 ROM:00003F3A mov.w #0x810, r0 ROM:00003F3E jsr homeScreenDrawLargeCurrentPokemonImage:24 ; (r0l = x, r0h = y) ROM:00003F42 mov.b #3, r0l ROM:00003F44 push.w r0 ROM:00003F46 mov.w #0x860, r1 ROM:00003F4A sub.w r0, r0 ROM:00003F4C jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003F50 adds #2, sp ROM:00003F52 mov.b #3, r0l ROM:00003F54 push.w r0 ROM:00003F56 mov.w #0x860, r1 ROM:00003F5A mov.w #0x3800, r0 ROM:00003F5E jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00003F62 adds #2, sp ROM:00003F64 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003F64 ; battle: ROM:00003F64 ; 0 - battle opening animation ROM:00003F64 ; 1 - "XYZ appeared" message ROM:00003F64 ; 2 - "attack evade catch" directions shown ROM:00003F64 ; 3 - our action taken. details in gCurSubstateF ROM:00003F64 ; 4 - poke action taken. details in gCurSubstateF ROM:00003F64 ; 5 - "was too strong" ROM:00003F64 ; 6 - we lost ROM:00003F64 ; 7 - fled ROM:00003F64 ; 8 - staredown ROM:00003F64 ; 9 - almost had it ROM:00003F64 ; 10 - "threw a pokeball" ROM:00003F64 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003F64 ; 12, 14 - pokeball flying ROM:00003F64 ; 13 - pokeball flying ROM:00003F64 ; 15 - catch animation plays ROM:00003F64 ; 16 - caught! ROM:00003F64 ; switcht: ROM:00003F64 ; cur slected poke name ROM:00003F68 inc.b r0l ROM:00003F6A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003F6A ; battle: ROM:00003F6A ; 0 - battle opening animation ROM:00003F6A ; 1 - "XYZ appeared" message ROM:00003F6A ; 2 - "attack evade catch" directions shown ROM:00003F6A ; 3 - our action taken. details in gCurSubstateF ROM:00003F6A ; 4 - poke action taken. details in gCurSubstateF ROM:00003F6A ; 5 - "was too strong" ROM:00003F6A ; 6 - we lost ROM:00003F6A ; 7 - fled ROM:00003F6A ; 8 - staredown ROM:00003F6A ; 9 - almost had it ROM:00003F6A ; 10 - "threw a pokeball" ROM:00003F6A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003F6A ; 12, 14 - pokeball flying ROM:00003F6A ; 13 - pokeball flying ROM:00003F6A ; 15 - catch animation plays ROM:00003F6A ; 16 - caught! ROM:00003F6A ; switcht: ROM:00003F6A ; cur slected poke name ROM:00003F6E jmp common_epilogue_6:24 ROM:00003F6E ; End of function drawLargePokemonImageWithBarsOnTopAndBottomOfScreen ROM:00003F6E ROM:00003F72 ROM:00003F72 ; =============== S U B R O U T I N E ======================================= ROM:00003F72 ROM:00003F72 ROM:00003F72 pokemonArrivalHandlerLikely: ; CODE XREF: drawPokemonArrivedAnimation:loc_416Ep ROM:00003F72 push.w r2 ROM:00003F74 push.w r3 ROM:00003F76 push.w r4 ROM:00003F78 mov.w #0x420, r0 ROM:00003F7C jsr drawCurPokemonSmallAnimatedFrame:24 ; (r0l = x, r0h = y) ROM:00003F80 mov.b #5, r1l ROM:00003F82 mov.w #0x2000, r0 ROM:00003F86 jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:00003F8A mov.w #0xE, r1 ROM:00003F8E mov.w #0xD30, r0 ; "has arrived!" ROM:00003F92 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00003F92 ; ROM:00003F92 ; //always drawn at x = 0 ROM:00003F92 ; ROM:00003F96 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003F96 ; battle: ROM:00003F96 ; 0 - battle opening animation ROM:00003F96 ; 1 - "XYZ appeared" message ROM:00003F96 ; 2 - "attack evade catch" directions shown ROM:00003F96 ; 3 - our action taken. details in gCurSubstateF ROM:00003F96 ; 4 - poke action taken. details in gCurSubstateF ROM:00003F96 ; 5 - "was too strong" ROM:00003F96 ; 6 - we lost ROM:00003F96 ; 7 - fled ROM:00003F96 ; 8 - staredown ROM:00003F96 ; 9 - almost had it ROM:00003F96 ; 10 - "threw a pokeball" ROM:00003F96 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003F96 ; 12, 14 - pokeball flying ROM:00003F96 ; 13 - pokeball flying ROM:00003F96 ; 15 - catch animation plays ROM:00003F96 ; 16 - caught! ROM:00003F96 ; switcht: ROM:00003F96 ; cur slected poke name ROM:00003F9A cmp.b #0x10, r0l ROM:00003F9C bcc loc_3FA4:8 ROM:00003F9E inc.b r0l ROM:00003FA0 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00003FA0 ; battle: ROM:00003FA0 ; 0 - battle opening animation ROM:00003FA0 ; 1 - "XYZ appeared" message ROM:00003FA0 ; 2 - "attack evade catch" directions shown ROM:00003FA0 ; 3 - our action taken. details in gCurSubstateF ROM:00003FA0 ; 4 - poke action taken. details in gCurSubstateF ROM:00003FA0 ; 5 - "was too strong" ROM:00003FA0 ; 6 - we lost ROM:00003FA0 ; 7 - fled ROM:00003FA0 ; 8 - staredown ROM:00003FA0 ; 9 - almost had it ROM:00003FA0 ; 10 - "threw a pokeball" ROM:00003FA0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003FA0 ; 12, 14 - pokeball flying ROM:00003FA0 ; 13 - pokeball flying ROM:00003FA0 ; 15 - catch animation plays ROM:00003FA0 ; 16 - caught! ROM:00003FA0 ; switcht: ROM:00003FA0 ; cur slected poke name ROM:00003FA4 ROM:00003FA4 loc_3FA4: ; CODE XREF: pokemonArrivalHandlerLikely+2Aj ROM:00003FA4 jsr is_F7C4_nonzero:24 ROM:00003FA8 mov.b r0l, r0l ROM:00003FAA bne loc_3FBE:8 ROM:00003FAC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00003FAC ; battle: ROM:00003FAC ; 0 - battle opening animation ROM:00003FAC ; 1 - "XYZ appeared" message ROM:00003FAC ; 2 - "attack evade catch" directions shown ROM:00003FAC ; 3 - our action taken. details in gCurSubstateF ROM:00003FAC ; 4 - poke action taken. details in gCurSubstateF ROM:00003FAC ; 5 - "was too strong" ROM:00003FAC ; 6 - we lost ROM:00003FAC ; 7 - fled ROM:00003FAC ; 8 - staredown ROM:00003FAC ; 9 - almost had it ROM:00003FAC ; 10 - "threw a pokeball" ROM:00003FAC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00003FAC ; 12, 14 - pokeball flying ROM:00003FAC ; 13 - pokeball flying ROM:00003FAC ; 15 - catch animation plays ROM:00003FAC ; 16 - caught! ROM:00003FAC ; switcht: ROM:00003FAC ; cur slected poke name ROM:00003FB0 cmp.b #8, r0l ROM:00003FB2 bls loc_3FBE:8 ROM:00003FB4 jsr someStateVarShuffling:24 ROM:00003FB8 sub.b r0l, r0l ROM:00003FBA jsr setCurrentlyActiveView:24 ROM:00003FBE ROM:00003FBE loc_3FBE: ; CODE XREF: pokemonArrivalHandlerLikely+38j ROM:00003FBE ; pokemonArrivalHandlerLikely+40j ROM:00003FBE pop.w r4 ROM:00003FC0 pop.w r3 ROM:00003FC2 pop.w r2 ROM:00003FC4 rts ROM:00003FC4 ; End of function pokemonArrivalHandlerLikely ROM:00003FC4 ROM:00003FC6 ROM:00003FC6 ; =============== S U B R O U T I N E ======================================= ROM:00003FC6 ROM:00003FC6 ; (void) gCurSubstateA has "what we got" ROM:00003FC6 ROM:00003FC6 drawItemMapStampOrRouteReceived: ; CODE XREF: drawSomethingReceivedAnimation:loc_42C6p ROM:00003FC6 val_0x10 = e6 ROM:00003FC6 push.w r2 ROM:00003FC8 push.w r3 ROM:00003FCA push.w r4 ROM:00003FCC push.w r5 ROM:00003FCE push.l er6 ROM:00003FD2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00003FD6 mov.w #0x180, r0 ROM:00003FDA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00003FDE mov.w r0, r6 ROM:00003FE0 mov.w #0x280, r5 ROM:00003FE4 mov.w #0x10, val_0x10 ROM:00003FE8 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00003FE8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00003FE8 ; ItemScreenHandler: ROM:00003FE8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00003FE8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00003FE8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00003FE8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00003FE8 ; 0x0010 - light grey pokeball ROM:00003FE8 ; 0x0020 - tiny map icon ROM:00003FE8 ; 0x0040 - found item #0 (slot nonempty) ROM:00003FE8 ; 0x0080 - found item #1 (slot nonempty) ROM:00003FE8 ; 0x0100 - found item #2 (slot nonempty) ROM:00003FE8 ; 0x0200 - grey item icon ROM:00003FE8 ; ItemRXed - what was RXed ROM:00003FE8 ; 0 - event pokemon ROM:00003FE8 ; 1 - special route ROM:00003FE8 ; 2 - item ROM:00003FE8 ; 3 - special ROM:00003FE8 ; 4 - stamp: heart ROM:00003FE8 ; 5 - stamp: spade ROM:00003FE8 ; 6 - stamp: diamond ROM:00003FE8 ; 7 - stamp: club ROM:00003FE8 ; switch: ROM:00003FE8 ; zero - pokemon does ROM:00003FE8 ; nonzero - item needs to be switched ROM:00003FE8 ; item RXed: ROM:00003FE8 ; what sort of thing was RXed: item, map, route, etc ROM:00003FEC cmp.b #7, r0l ROM:00003FEE bhi loc_40D0:16 ROM:00003FF2 extu.w r0 ROM:00003FF4 add.w r0, r0 ROM:00003FF6 mov.w @(JUMPTABLE_3FF6,er0), r0 ROM:00003FFA jmp @er0 ROM:00003FFC ; --------------------------------------------------------------------------- ROM:00003FFC ROM:00003FFC _case_3: ; DATA XREF: ROM:0000BD66o ROM:00003FFC add.w #0x1750, r5 ; 0x19d0 = large map scroll thingie 32x24 ROM:00004000 mov.w r5, r0 ROM:00004002 mov.w #0xC0, r1 ; '+' ROM:00004006 mov.w r6, e0 ROM:00004008 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000400C mov.w r6, e0 ROM:0000400E mov.w #0x1820, r1 ROM:00004012 mov.w #0x420, r0 ROM:00004016 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000401A mov.w #0xD, r1 ROM:0000401E mov.w #0x1120, r0 ; "Special Map" ROM:00004022 jmp item_rxed_show_msg:24 ROM:00004026 ; --------------------------------------------------------------------------- ROM:00004026 ROM:00004026 _case_0: ; DATA XREF: ROM:JUMPTABLE_3FF6o ROM:00004026 mov.b @curUiFlags:16, r0l ; bits: ROM:00004026 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00004026 ; 0x02 - slower animation frame ROM:0000402A and.b #1, r0l ROM:0000402C mov.b #0xC0, r0h ; '+' ROM:0000402E mulxu.b r0h, r0 ROM:00004030 add.w #0xBA80, r0 ROM:00004034 mov.w #0x180, r1 ROM:00004038 mov.w r6, e0 ROM:0000403A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000403E mov.w r6, e0 ROM:00004040 mov.w #0x1820, r1 ROM:00004044 mov.w #0x820, r0 ROM:00004048 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000404C mov.b #5, r1l ROM:0000404E mov.w #0x2000, r0 ROM:00004052 jsr showEventPokeNameAndMaybeAnimation:24 ; (r0l = x, r0h = y, r1l = borderBits) ROM:00004056 bra loc_40D0:8 ROM:00004058 ; --------------------------------------------------------------------------- ROM:00004058 ROM:00004058 _case_2: ; DATA XREF: ROM:0000BD64o ROM:00004058 mov.w #0x420, r0 ROM:0000405C jsr drawLargeItemChest:24 ; (r0l = x, r0h = y) ROM:00004060 mov.b #0xD, r1l ROM:00004062 mov.w #0x2000, r0 ROM:00004066 jsr showRxedItemName:24 ; (r0l = imgWidth, r0h = imgHeight, r1l = flagsBits) ROM:0000406A bra loc_40D0:8 ROM:0000406C ; --------------------------------------------------------------------------- ROM:0000406C ROM:0000406C _case_1: ; DATA XREF: ROM:0000BD62o ROM:0000406C add.w #0x1750, r5 ; image: large map/scroll thingie 32x24 ROM:00004070 mov.w r5, r0 ROM:00004072 mov.w #0xC0, r1 ; '+' ROM:00004076 mov.w r6, e0 ROM:00004078 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000407C mov.w r6, e0 ROM:0000407E mov.w #0x1820, r1 ROM:00004082 mov.w #0x420, r0 ROM:00004086 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000408A mov.w #0xD, r1 ROM:0000408E mov.w #0x1320, r0 ; "Special Route" ROM:00004092 bra item_rxed_show_msg:8 ROM:00004094 ; --------------------------------------------------------------------------- ROM:00004094 ROM:00004094 _case_4: ; DATA XREF: ROM:0000BD68o ROM:00004094 add.w #0x238, r5 ; card face: heart ROM:00004098 bra loc_40AC:8 ROM:0000409A ; --------------------------------------------------------------------------- ROM:0000409A ROM:0000409A _case_5: ; DATA XREF: ROM:0000BD6Ao ROM:0000409A add.w #0x238, r5 ROM:0000409E add.w val_0x10, r5 ; card face: spade ROM:000040A0 bra loc_40AC:8 ROM:000040A2 ; --------------------------------------------------------------------------- ROM:000040A2 ROM:000040A2 _case_6: ; DATA XREF: ROM:0000BD6Co ROM:000040A2 add.w #0x258, r5 ; card face: diamond ROM:000040A6 bra loc_40AC:8 ROM:000040A8 ; --------------------------------------------------------------------------- ROM:000040A8 ROM:000040A8 _case_7: ; DATA XREF: ROM:0000BD6Eo ROM:000040A8 add.w #0x268, r5 ; card face: club ROM:000040AC ROM:000040AC loc_40AC: ; CODE XREF: drawItemMapStampOrRouteReceived+D2j ROM:000040AC ; drawItemMapStampOrRouteReceived+DAj ... ROM:000040AC mov.w val_0x10, r1 ROM:000040AE mov.w r5, r0 ROM:000040B0 mov.w r6, e0 ROM:000040B2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000040B6 mov.w r6, e0 ROM:000040B8 mov.w #0x808, r1 ROM:000040BC mov.w #0x102C, r0 ROM:000040C0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000040C4 mov.w #0xD, r1 ROM:000040C8 mov.w #0x1220, r0 ; "Stamp" ROM:000040CC ROM:000040CC item_rxed_show_msg: ; CODE XREF: drawItemMapStampOrRouteReceived+5Cj ROM:000040CC ; drawItemMapStampOrRouteReceived+CCj ROM:000040CC jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:000040CC ; ROM:000040CC ; //always drawn at x = 0 ROM:000040CC ; ROM:000040D0 ROM:000040D0 loc_40D0: ; CODE XREF: drawItemMapStampOrRouteReceived+28j ROM:000040D0 ; drawItemMapStampOrRouteReceived+90j ... ROM:000040D0 mov.w #0xE, r1 ROM:000040D4 mov.w #0xF30, r0 ; "received!" ROM:000040D8 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:000040D8 ; ROM:000040D8 ; //always drawn at x = 0 ROM:000040D8 ; ROM:000040DC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000040DC ; battle: ROM:000040DC ; 0 - battle opening animation ROM:000040DC ; 1 - "XYZ appeared" message ROM:000040DC ; 2 - "attack evade catch" directions shown ROM:000040DC ; 3 - our action taken. details in gCurSubstateF ROM:000040DC ; 4 - poke action taken. details in gCurSubstateF ROM:000040DC ; 5 - "was too strong" ROM:000040DC ; 6 - we lost ROM:000040DC ; 7 - fled ROM:000040DC ; 8 - staredown ROM:000040DC ; 9 - almost had it ROM:000040DC ; 10 - "threw a pokeball" ROM:000040DC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000040DC ; 12, 14 - pokeball flying ROM:000040DC ; 13 - pokeball flying ROM:000040DC ; 15 - catch animation plays ROM:000040DC ; 16 - caught! ROM:000040DC ; switcht: ROM:000040DC ; cur slected poke name ROM:000040E0 cmp.b #0x10, r0l ROM:000040E2 bcc loc_40EA:8 ROM:000040E4 inc.b r0l ROM:000040E6 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000040E6 ; battle: ROM:000040E6 ; 0 - battle opening animation ROM:000040E6 ; 1 - "XYZ appeared" message ROM:000040E6 ; 2 - "attack evade catch" directions shown ROM:000040E6 ; 3 - our action taken. details in gCurSubstateF ROM:000040E6 ; 4 - poke action taken. details in gCurSubstateF ROM:000040E6 ; 5 - "was too strong" ROM:000040E6 ; 6 - we lost ROM:000040E6 ; 7 - fled ROM:000040E6 ; 8 - staredown ROM:000040E6 ; 9 - almost had it ROM:000040E6 ; 10 - "threw a pokeball" ROM:000040E6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000040E6 ; 12, 14 - pokeball flying ROM:000040E6 ; 13 - pokeball flying ROM:000040E6 ; 15 - catch animation plays ROM:000040E6 ; 16 - caught! ROM:000040E6 ; switcht: ROM:000040E6 ; cur slected poke name ROM:000040EA ROM:000040EA loc_40EA: ; CODE XREF: drawItemMapStampOrRouteReceived+11Cj ROM:000040EA pop.l er6 ROM:000040EE pop.w r5 ROM:000040F0 pop.w r4 ROM:000040F2 pop.w r3 ROM:000040F4 pop.w r2 ROM:000040F6 rts ROM:000040F6 ; End of function drawItemMapStampOrRouteReceived ROM:000040F6 ROM:000040F8 ROM:000040F8 ; =============== S U B R O U T I N E ======================================= ROM:000040F8 ROM:000040F8 ROM:000040F8 interactionHandlerPokemonArrivedAnimation: ROM:000040F8 ; CODE XREF: interactionHandler:case_0x0fp ROM:000040F8 mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:000040F8 ; battle: ROM:000040F8 ; 0 - battle opening animation ROM:000040F8 ; 1 - "XYZ appeared" message ROM:000040F8 ; 2 - "attack evade catch" directions shown ROM:000040F8 ; 3 - our action taken. details in gCurSubstateF ROM:000040F8 ; 4 - poke action taken. details in gCurSubstateF ROM:000040F8 ; 5 - "was too strong" ROM:000040F8 ; 6 - we lost ROM:000040F8 ; 7 - fled ROM:000040F8 ; 8 - staredown ROM:000040F8 ; 9 - almost had it ROM:000040F8 ; 10 - "threw a pokeball" ROM:000040F8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000040F8 ; 12, 14 - pokeball flying ROM:000040F8 ; 13 - pokeball flying ROM:000040F8 ; 15 - catch animation plays ROM:000040F8 ; 16 - caught! ROM:000040F8 ; switcht: ROM:000040F8 ; cur slected poke name ROM:000040FC mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000040FC ; gifted items view: this is item number that has focus and arrow ROM:000040FC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000040FC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000040FC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004100 beq loc_410C:8 ROM:00004102 cmp.b #1, r0l ROM:00004104 beq loc_411E:8 ROM:00004106 cmp.b #2, r0l ROM:00004108 bne locret_4146:8 ROM:0000410A bra loc_4130:8 ROM:0000410C ; --------------------------------------------------------------------------- ROM:0000410C ROM:0000410C loc_410C: ; CODE XREF: interactionHandlerPokemonArrivedAnimation+8j ROM:0000410C cmp.b #4, r1l ROM:0000410E bls locret_4146:8 ROM:00004110 mov.b #1, r0l ROM:00004112 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00004112 ; gifted items view: this is item number that has focus and arrow ROM:00004112 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004112 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004112 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004116 sub.b r0l, r0l ROM:00004118 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004118 ; battle: ROM:00004118 ; 0 - battle opening animation ROM:00004118 ; 1 - "XYZ appeared" message ROM:00004118 ; 2 - "attack evade catch" directions shown ROM:00004118 ; 3 - our action taken. details in gCurSubstateF ROM:00004118 ; 4 - poke action taken. details in gCurSubstateF ROM:00004118 ; 5 - "was too strong" ROM:00004118 ; 6 - we lost ROM:00004118 ; 7 - fled ROM:00004118 ; 8 - staredown ROM:00004118 ; 9 - almost had it ROM:00004118 ; 10 - "threw a pokeball" ROM:00004118 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004118 ; 12, 14 - pokeball flying ROM:00004118 ; 13 - pokeball flying ROM:00004118 ; 15 - catch animation plays ROM:00004118 ; 16 - caught! ROM:00004118 ; switcht: ROM:00004118 ; cur slected poke name ROM:0000411C bra locret_4146:8 ROM:0000411E ; --------------------------------------------------------------------------- ROM:0000411E ROM:0000411E loc_411E: ; CODE XREF: interactionHandlerPokemonArrivedAnimation+Cj ROM:0000411E mov.b r1l, r1l ROM:00004120 beq locret_4146:8 ROM:00004122 mov.b #2, r0l ROM:00004124 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00004124 ; gifted items view: this is item number that has focus and arrow ROM:00004124 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004124 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004124 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004128 sub.b r0l, r0l ROM:0000412A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000412A ; battle: ROM:0000412A ; 0 - battle opening animation ROM:0000412A ; 1 - "XYZ appeared" message ROM:0000412A ; 2 - "attack evade catch" directions shown ROM:0000412A ; 3 - our action taken. details in gCurSubstateF ROM:0000412A ; 4 - poke action taken. details in gCurSubstateF ROM:0000412A ; 5 - "was too strong" ROM:0000412A ; 6 - we lost ROM:0000412A ; 7 - fled ROM:0000412A ; 8 - staredown ROM:0000412A ; 9 - almost had it ROM:0000412A ; 10 - "threw a pokeball" ROM:0000412A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000412A ; 12, 14 - pokeball flying ROM:0000412A ; 13 - pokeball flying ROM:0000412A ; 15 - catch animation plays ROM:0000412A ; 16 - caught! ROM:0000412A ; switcht: ROM:0000412A ; cur slected poke name ROM:0000412E bra loc_4142:8 ROM:00004130 ; --------------------------------------------------------------------------- ROM:00004130 ROM:00004130 loc_4130: ; CODE XREF: interactionHandlerPokemonArrivedAnimation+12j ROM:00004130 cmp.b #8, r1l ROM:00004132 bls locret_4146:8 ROM:00004134 sub.b r0l, r0l ROM:00004136 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004136 ; battle: ROM:00004136 ; 0 - battle opening animation ROM:00004136 ; 1 - "XYZ appeared" message ROM:00004136 ; 2 - "attack evade catch" directions shown ROM:00004136 ; 3 - our action taken. details in gCurSubstateF ROM:00004136 ; 4 - poke action taken. details in gCurSubstateF ROM:00004136 ; 5 - "was too strong" ROM:00004136 ; 6 - we lost ROM:00004136 ; 7 - fled ROM:00004136 ; 8 - staredown ROM:00004136 ; 9 - almost had it ROM:00004136 ; 10 - "threw a pokeball" ROM:00004136 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004136 ; 12, 14 - pokeball flying ROM:00004136 ; 13 - pokeball flying ROM:00004136 ; 15 - catch animation plays ROM:00004136 ; 16 - caught! ROM:00004136 ; switcht: ROM:00004136 ; cur slected poke name ROM:0000413A mov.b #3, r0l ROM:0000413C mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000413C ; gifted items view: this is item number that has focus and arrow ROM:0000413C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000413C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000413C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004140 mov.b #6, r0l ROM:00004142 ROM:00004142 loc_4142: ; CODE XREF: interactionHandlerPokemonArrivedAnimation+36j ROM:00004142 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00004146 ROM:00004146 locret_4146: ; CODE XREF: interactionHandlerPokemonArrivedAnimation+10j ROM:00004146 ; interactionHandlerPokemonArrivedAnimation+16j ... ROM:00004146 rts ROM:00004146 ; End of function interactionHandlerPokemonArrivedAnimation ROM:00004146 ROM:00004148 ROM:00004148 ; =============== S U B R O U T I N E ======================================= ROM:00004148 ROM:00004148 ROM:00004148 drawPokemonArrivedAnimation: ; CODE XREF: maybe_viewDoDisplay:case__0x0fp ROM:00004148 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00004148 ; gifted items view: this is item number that has focus and arrow ROM:00004148 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004148 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004148 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000414C beq loc_415C:8 ROM:0000414E cmp.b #1, r0l ROM:00004150 beq loc_4162:8 ROM:00004152 cmp.b #2, r0l ROM:00004154 beq loc_4168:8 ROM:00004156 cmp.b #3, r0l ROM:00004158 bne loc_4172:8 ROM:0000415A bra loc_416E:8 ROM:0000415C ; --------------------------------------------------------------------------- ROM:0000415C ROM:0000415C loc_415C: ; CODE XREF: drawPokemonArrivedAnimation+4j ROM:0000415C jsr drawBallFropFromTopOfScreen:24 ROM:00004160 bra loc_4172:8 ROM:00004162 ; --------------------------------------------------------------------------- ROM:00004162 ROM:00004162 loc_4162: ; CODE XREF: drawPokemonArrivedAnimation+8j ROM:00004162 jsr drawCloudWithBarsOnTopAndBottomOfScreen2:24 ; literally same as drawCloudWithBarsOnTopAndBottomOfScreen ROM:00004166 bra loc_4172:8 ROM:00004168 ; --------------------------------------------------------------------------- ROM:00004168 ROM:00004168 loc_4168: ; CODE XREF: drawPokemonArrivedAnimation+Cj ROM:00004168 jsr drawLargePokemonImageWithBarsOnTopAndBottomOfScreen:24 ROM:0000416C bra loc_4172:8 ROM:0000416E ; --------------------------------------------------------------------------- ROM:0000416E ROM:0000416E loc_416E: ; CODE XREF: drawPokemonArrivedAnimation+12j ROM:0000416E jsr pokemonArrivalHandlerLikely:24 ROM:00004172 ROM:00004172 loc_4172: ; CODE XREF: drawPokemonArrivedAnimation+10j ROM:00004172 ; drawPokemonArrivedAnimation+18j ... ROM:00004172 sub.w r0, r0 ROM:00004174 jmp drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00004174 ; End of function drawPokemonArrivedAnimation ROM:00004174 ROM:00004178 ROM:00004178 ; =============== S U B R O U T I N E ======================================= ROM:00004178 ROM:00004178 ROM:00004178 interactionHandlerSomethingReceivedScreenDirectIrCommand: ROM:00004178 ; CODE XREF: interactionHandler:case_0x11p ROM:00004178 ROM:00004178 var_2 = -2 ROM:00004178 ROM:00004178 subs #2, sp ROM:0000417A mov.b @gCurSubstateZ:16, r6l ; different per mode ROM:0000417A ; battle: ROM:0000417A ; 0 - battle opening animation ROM:0000417A ; 1 - "XYZ appeared" message ROM:0000417A ; 2 - "attack evade catch" directions shown ROM:0000417A ; 3 - our action taken. details in gCurSubstateF ROM:0000417A ; 4 - poke action taken. details in gCurSubstateF ROM:0000417A ; 5 - "was too strong" ROM:0000417A ; 6 - we lost ROM:0000417A ; 7 - fled ROM:0000417A ; 8 - staredown ROM:0000417A ; 9 - almost had it ROM:0000417A ; 10 - "threw a pokeball" ROM:0000417A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000417A ; 12, 14 - pokeball flying ROM:0000417A ; 13 - pokeball flying ROM:0000417A ; 15 - catch animation plays ROM:0000417A ; 16 - caught! ROM:0000417A ; switcht: ROM:0000417A ; cur slected poke name ROM:0000417E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000417E ; gifted items view: this is item number that has focus and arrow ROM:0000417E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000417E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000417E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004182 beq loc_4190:8 ROM:00004184 cmp.b #1, r0l ROM:00004186 beq loc_41A4:8 ROM:00004188 cmp.b #3, r0l ROM:0000418A bne loc_429C:16 ROM:0000418E bra loc_41C0:8 ROM:00004190 ; --------------------------------------------------------------------------- ROM:00004190 ROM:00004190 loc_4190: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+Aj ROM:00004190 cmp.b #4, r6l ROM:00004192 bls loc_429C:16 ROM:00004196 mov.b #4, r0l ROM:00004198 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00004198 ; gifted items view: this is item number that has focus and arrow ROM:00004198 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004198 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004198 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000419C sub.b r0l, r0l ROM:0000419E mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000419E ; battle: ROM:0000419E ; 0 - battle opening animation ROM:0000419E ; 1 - "XYZ appeared" message ROM:0000419E ; 2 - "attack evade catch" directions shown ROM:0000419E ; 3 - our action taken. details in gCurSubstateF ROM:0000419E ; 4 - poke action taken. details in gCurSubstateF ROM:0000419E ; 5 - "was too strong" ROM:0000419E ; 6 - we lost ROM:0000419E ; 7 - fled ROM:0000419E ; 8 - staredown ROM:0000419E ; 9 - almost had it ROM:0000419E ; 10 - "threw a pokeball" ROM:0000419E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000419E ; 12, 14 - pokeball flying ROM:0000419E ; 13 - pokeball flying ROM:0000419E ; 15 - catch animation plays ROM:0000419E ; 16 - caught! ROM:0000419E ; switcht: ROM:0000419E ; cur slected poke name ROM:000041A2 bra loc_41B8:8 ROM:000041A4 ; --------------------------------------------------------------------------- ROM:000041A4 ROM:000041A4 loc_41A4: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+Ej ROM:000041A4 mov.b r6l, r6l ROM:000041A6 beq loc_429C:16 ROM:000041AA mov.b #3, r0l ROM:000041AC mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000041AC ; gifted items view: this is item number that has focus and arrow ROM:000041AC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000041AC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000041AC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000041B0 sub.b r0l, r0l ROM:000041B2 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000041B2 ; battle: ROM:000041B2 ; 0 - battle opening animation ROM:000041B2 ; 1 - "XYZ appeared" message ROM:000041B2 ; 2 - "attack evade catch" directions shown ROM:000041B2 ; 3 - our action taken. details in gCurSubstateF ROM:000041B2 ; 4 - poke action taken. details in gCurSubstateF ROM:000041B2 ; 5 - "was too strong" ROM:000041B2 ; 6 - we lost ROM:000041B2 ; 7 - fled ROM:000041B2 ; 8 - staredown ROM:000041B2 ; 9 - almost had it ROM:000041B2 ; 10 - "threw a pokeball" ROM:000041B2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000041B2 ; 12, 14 - pokeball flying ROM:000041B2 ; 13 - pokeball flying ROM:000041B2 ; 15 - catch animation plays ROM:000041B2 ; 16 - caught! ROM:000041B2 ; switcht: ROM:000041B2 ; cur slected poke name ROM:000041B6 mov.b #6, r0l ROM:000041B8 ROM:000041B8 loc_41B8: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+2Aj ROM:000041B8 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000041BC jmp loc_429C:24 ROM:000041C0 ; --------------------------------------------------------------------------- ROM:000041C0 ROM:000041C0 loc_41C0: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+16j ROM:000041C0 jsr is_F7C4_nonzero:24 ROM:000041C4 mov.b r0l, r0l ROM:000041C6 bne loc_429C:16 ROM:000041CA mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000041CA ; battle: ROM:000041CA ; 0 - battle opening animation ROM:000041CA ; 1 - "XYZ appeared" message ROM:000041CA ; 2 - "attack evade catch" directions shown ROM:000041CA ; 3 - our action taken. details in gCurSubstateF ROM:000041CA ; 4 - poke action taken. details in gCurSubstateF ROM:000041CA ; 5 - "was too strong" ROM:000041CA ; 6 - we lost ROM:000041CA ; 7 - fled ROM:000041CA ; 8 - staredown ROM:000041CA ; 9 - almost had it ROM:000041CA ; 10 - "threw a pokeball" ROM:000041CA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000041CA ; 12, 14 - pokeball flying ROM:000041CA ; 13 - pokeball flying ROM:000041CA ; 15 - catch animation plays ROM:000041CA ; 16 - caught! ROM:000041CA ; switcht: ROM:000041CA ; cur slected poke name ROM:000041CE cmp.b #8, r0l ROM:000041D0 bls loc_429C:16 ROM:000041D4 mov.w #0xBE, e6 ; '+' ROM:000041D8 mov.w #static_malloc, r6 ; (r0 = size) -> r0 = ptr ROM:000041DC mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:000041DC ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000041DC ; ItemScreenHandler: ROM:000041DC ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000041DC ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000041DC ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000041DC ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000041DC ; 0x0010 - light grey pokeball ROM:000041DC ; 0x0020 - tiny map icon ROM:000041DC ; 0x0040 - found item #0 (slot nonempty) ROM:000041DC ; 0x0080 - found item #1 (slot nonempty) ROM:000041DC ; 0x0100 - found item #2 (slot nonempty) ROM:000041DC ; 0x0200 - grey item icon ROM:000041DC ; ItemRXed - what was RXed ROM:000041DC ; 0 - event pokemon ROM:000041DC ; 1 - special route ROM:000041DC ; 2 - item ROM:000041DC ; 3 - special ROM:000041DC ; 4 - stamp: heart ROM:000041DC ; 5 - stamp: spade ROM:000041DC ; 6 - stamp: diamond ROM:000041DC ; 7 - stamp: club ROM:000041DC ; switch: ROM:000041DC ; zero - pokemon does ROM:000041DC ; nonzero - item needs to be switched ROM:000041DC ; item RXed: ROM:000041DC ; what sort of thing was RXed: item, map, route, etc ROM:000041E0 beq loc_41EA:8 ROM:000041E2 cmp.b #2, r0l ROM:000041E4 bne loc_4292:16 ROM:000041E8 bra loc_423A:8 ROM:000041EA ; --------------------------------------------------------------------------- ROM:000041EA ROM:000041EA loc_41EA: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+68j ROM:000041EA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000041EE mov.w e6, r0 ROM:000041F0 jsr @er6 ; malloc ROM:000041F2 mov.w r0, r5 ROM:000041F4 mov.w e6, r1 ROM:000041F6 mov.w r0, e0 ROM:000041F8 mov.w #0x8F00, r0 ROM:000041FC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004200 mov.w #0x10, r0 ROM:00004204 jsr @er6 ; malloc ROM:00004206 mov.w r0, e0 ROM:00004208 mov.w #0xBA44, r0 ROM:0000420C mov.w #0x10, r1 ROM:00004210 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004214 mov.b #4, r0l ROM:00004216 push.w r0 ROM:00004218 sub.b r1h, r1h ROM:0000421A mov.b @RamCache_settingsByte:16, r0l ROM:0000421E bld #0, r0l ROM:00004220 bst #0, r1h ROM:00004222 mov.w #0x88, r0 ; 'ê' ROM:00004226 mov.w r1, @(2:16,sp) ROM:0000422A jsr @er6 ; malloc ROM:0000422C mov.w r0, e0 ROM:0000422E mov.w r5, r0 ROM:00004230 sub.w e1, e1 ROM:00004232 mov.b @(2:16,sp), r1h ROM:00004236 mov.b #0x1D, r1l ROM:00004238 bra loc_428C:8 ROM:0000423A ; --------------------------------------------------------------------------- ROM:0000423A ROM:0000423A loc_423A: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+70j ROM:0000423A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000423E mov.w e6, r0 ROM:00004240 jsr @er6 ; malloc ROM:00004242 mov.w r0, r4 ROM:00004244 mov.w e6, r1 ROM:00004246 mov.w r0, e0 ROM:00004248 mov.w #0x8F00, r0 ROM:0000424C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004250 mov.w #0x188, r0 ROM:00004254 jsr @er6 ; malloc ROM:00004256 mov.w r0, r5 ROM:00004258 mov.w r0, e0 ROM:0000425A mov.w #0xBD40, r0 ROM:0000425E mov.w #0x188, r1 ROM:00004262 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004266 sub.b r0l, r0l ROM:00004268 push.w r0 ROM:0000426A sub.b r1h, r1h ROM:0000426C mov.b @RamCache_settingsByte:16, r0l ROM:00004270 bld #0, r0l ROM:00004272 bst #0, r1h ROM:00004274 mov.w #0x88, r0 ; 'ê' ROM:00004278 mov.w r1, @(4+var_2:16,sp) ROM:0000427C jsr @er6 ; malloc ROM:0000427E mov.w r0, e0 ROM:00004280 mov.w @(6:16,er5), e1 ROM:00004284 mov.w r4, r0 ROM:00004286 mov.b @(4+var_2:16,sp), r1h ROM:0000428A mov.b #0x1C, r1l ROM:0000428C ROM:0000428C loc_428C: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+C0j ROM:0000428C jsr logEvent:24 ; ( ROM:0000428C ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:0000428C ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:0000428C ; r1l = eventTYpe ROM:0000428C ; r1h = boolean isOnSpecialEventRoute ROM:0000428C ; e1 = extraInfo (eg: item type) ROM:0000428C ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:0000428C ; ) ROM:00004290 adds #2, sp ROM:00004292 ROM:00004292 loc_4292: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+6Cj ROM:00004292 jsr someStateVarShuffling:24 ROM:00004296 sub.b r0l, r0l ROM:00004298 jsr setCurrentlyActiveView:24 ROM:0000429C ROM:0000429C loc_429C: ; CODE XREF: interactionHandlerSomethingReceivedScreenDirectIrCommand+12j ROM:0000429C ; interactionHandlerSomethingReceivedScreenDirectIrCommand+1Aj ... ROM:0000429C adds #2, sp ROM:0000429E rts ROM:0000429E ; End of function interactionHandlerSomethingReceivedScreenDirectIrCommand ROM:0000429E ROM:000042A0 ROM:000042A0 ; =============== S U B R O U T I N E ======================================= ROM:000042A0 ROM:000042A0 ROM:000042A0 drawSomethingReceivedAnimation: ; CODE XREF: maybe_viewDoDisplay:case__0x11p ROM:000042A0 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000042A0 ; gifted items view: this is item number that has focus and arrow ROM:000042A0 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000042A0 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000042A0 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000042A4 beq loc_42B4:8 ROM:000042A6 cmp.b #4, r0l ROM:000042A8 beq loc_42BA:8 ROM:000042AA cmp.b #1, r0l ROM:000042AC beq loc_42C0:8 ROM:000042AE cmp.b #3, r0l ROM:000042B0 bne loc_42CA:8 ROM:000042B2 bra loc_42C6:8 ROM:000042B4 ; --------------------------------------------------------------------------- ROM:000042B4 ROM:000042B4 loc_42B4: ; CODE XREF: drawSomethingReceivedAnimation+4j ROM:000042B4 jsr drawBallFropFromTopOfScreen:24 ROM:000042B8 bra loc_42CA:8 ROM:000042BA ; --------------------------------------------------------------------------- ROM:000042BA ROM:000042BA loc_42BA: ; CODE XREF: drawSomethingReceivedAnimation+8j ROM:000042BA jsr drawPokeballInMiddleOfScreen:24 ROM:000042BE bra loc_42CA:8 ROM:000042C0 ; --------------------------------------------------------------------------- ROM:000042C0 ROM:000042C0 loc_42C0: ; CODE XREF: drawSomethingReceivedAnimation+Cj ROM:000042C0 jsr drawCloudWithBarsOnTopAndBottomOfScreen2:24 ; literally same as drawCloudWithBarsOnTopAndBottomOfScreen ROM:000042C4 bra loc_42CA:8 ROM:000042C6 ; --------------------------------------------------------------------------- ROM:000042C6 ROM:000042C6 loc_42C6: ; CODE XREF: drawSomethingReceivedAnimation+12j ROM:000042C6 jsr drawItemMapStampOrRouteReceived:24 ; (void) gCurSubstateA has "what we got" ROM:000042CA ROM:000042CA loc_42CA: ; CODE XREF: drawSomethingReceivedAnimation+10j ROM:000042CA ; drawSomethingReceivedAnimation+18j ... ROM:000042CA sub.w r0, r0 ROM:000042CC jmp drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:000042CC ; End of function drawSomethingReceivedAnimation ROM:000042CC ROM:000042D0 ROM:000042D0 ; =============== S U B R O U T I N E ======================================= ROM:000042D0 ROM:000042D0 ; literally same as drawLargePokemonImageWithBarsOnTopAndBottomOfScreen() ROM:000042D0 ROM:000042D0 drawLargePokemonImageWithBarsOnTopAndBottomOfScreen2: ROM:000042D0 ; CODE XREF: drawSomethignDepartingandCompletedMessage:loc_4512p ROM:000042D0 push.w r2 ROM:000042D2 push.l er3 ROM:000042D6 push.w r5 ROM:000042D8 mov.w #0x810, r0 ROM:000042DC jsr homeScreenDrawLargeCurrentPokemonImage:24 ; (r0l = x, r0h = y) ROM:000042E0 mov.b #3, r0l ROM:000042E2 push.w r0 ROM:000042E4 mov.w #0x860, r1 ROM:000042E8 sub.w r0, r0 ROM:000042EA jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:000042EE adds #2, sp ROM:000042F0 mov.b #3, r0l ROM:000042F2 push.w r0 ROM:000042F4 mov.w #0x860, r1 ROM:000042F8 mov.w #0x3800, r0 ROM:000042FC jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00004300 adds #2, sp ROM:00004302 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004302 ; battle: ROM:00004302 ; 0 - battle opening animation ROM:00004302 ; 1 - "XYZ appeared" message ROM:00004302 ; 2 - "attack evade catch" directions shown ROM:00004302 ; 3 - our action taken. details in gCurSubstateF ROM:00004302 ; 4 - poke action taken. details in gCurSubstateF ROM:00004302 ; 5 - "was too strong" ROM:00004302 ; 6 - we lost ROM:00004302 ; 7 - fled ROM:00004302 ; 8 - staredown ROM:00004302 ; 9 - almost had it ROM:00004302 ; 10 - "threw a pokeball" ROM:00004302 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004302 ; 12, 14 - pokeball flying ROM:00004302 ; 13 - pokeball flying ROM:00004302 ; 15 - catch animation plays ROM:00004302 ; 16 - caught! ROM:00004302 ; switcht: ROM:00004302 ; cur slected poke name ROM:00004306 inc.b r0l ROM:00004308 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004308 ; battle: ROM:00004308 ; 0 - battle opening animation ROM:00004308 ; 1 - "XYZ appeared" message ROM:00004308 ; 2 - "attack evade catch" directions shown ROM:00004308 ; 3 - our action taken. details in gCurSubstateF ROM:00004308 ; 4 - poke action taken. details in gCurSubstateF ROM:00004308 ; 5 - "was too strong" ROM:00004308 ; 6 - we lost ROM:00004308 ; 7 - fled ROM:00004308 ; 8 - staredown ROM:00004308 ; 9 - almost had it ROM:00004308 ; 10 - "threw a pokeball" ROM:00004308 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004308 ; 12, 14 - pokeball flying ROM:00004308 ; 13 - pokeball flying ROM:00004308 ; 15 - catch animation plays ROM:00004308 ; 16 - caught! ROM:00004308 ; switcht: ROM:00004308 ; cur slected poke name ROM:0000430C jmp common_epilogue_6:24 ROM:0000430C ; End of function drawLargePokemonImageWithBarsOnTopAndBottomOfScreen2 ROM:0000430C ROM:00004310 ROM:00004310 ; =============== S U B R O U T I N E ======================================= ROM:00004310 ROM:00004310 ROM:00004310 drawCloudWithBarsOnTopAndBottomOfScreen: ROM:00004310 ; CODE XREF: drawSomethignDepartingandCompletedMessage:loc_4518p ROM:00004310 push.w r2 ROM:00004312 push.w r5 ROM:00004314 push.w r6 ROM:00004316 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000431A mov.w #0x180, r0 ROM:0000431E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004322 mov.w r0, r6 ROM:00004324 mov.w #0x1F70, r5 ; 0x1F70 = cloud "for pokemon appeared" 32x24 ROM:00004328 mov.w r0, e0 ROM:0000432A mov.w r5, r0 ROM:0000432C mov.w #0xC0, r1 ; '+' ROM:00004330 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004334 mov.w r6, e0 ROM:00004336 mov.w #0x1820, r1 ROM:0000433A mov.w #0x1020, r0 ROM:0000433E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004342 mov.b #3, r0l ROM:00004344 push.w r0 ROM:00004346 mov.w #0x860, r1 ROM:0000434A sub.w r0, r0 ROM:0000434C jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00004350 adds #2, sp ROM:00004352 mov.b #3, r0l ROM:00004354 push.w r0 ROM:00004356 mov.w #0x860, r1 ROM:0000435A mov.w #0x3800, r0 ROM:0000435E jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00004362 adds #2, sp ROM:00004364 sub.b r0l, r0l ROM:00004366 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00004366 ; gifted items view: this is item number that has focus and arrow ROM:00004366 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004366 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004366 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000436A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000436A ; battle: ROM:0000436A ; 0 - battle opening animation ROM:0000436A ; 1 - "XYZ appeared" message ROM:0000436A ; 2 - "attack evade catch" directions shown ROM:0000436A ; 3 - our action taken. details in gCurSubstateF ROM:0000436A ; 4 - poke action taken. details in gCurSubstateF ROM:0000436A ; 5 - "was too strong" ROM:0000436A ; 6 - we lost ROM:0000436A ; 7 - fled ROM:0000436A ; 8 - staredown ROM:0000436A ; 9 - almost had it ROM:0000436A ; 10 - "threw a pokeball" ROM:0000436A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000436A ; 12, 14 - pokeball flying ROM:0000436A ; 13 - pokeball flying ROM:0000436A ; 15 - catch animation plays ROM:0000436A ; 16 - caught! ROM:0000436A ; switcht: ROM:0000436A ; cur slected poke name ROM:0000436E jmp epilogue_common_pop_r6_r5_r2:24 ROM:0000436E ; End of function drawCloudWithBarsOnTopAndBottomOfScreen ROM:0000436E ROM:00004372 ROM:00004372 ; =============== S U B R O U T I N E ======================================= ROM:00004372 ROM:00004372 ROM:00004372 drawMovingBlankIconWithBarsOnTopAndBottom: ROM:00004372 ; CODE XREF: drawSomethignDepartingandCompletedMessage:loc_451Ep ROM:00004372 push.w r2 ROM:00004374 push.w r5 ROM:00004376 push.w r6 ROM:00004378 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000437C mov.w #0x180, r0 ROM:00004380 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004384 mov.w r0, r6 ROM:00004386 mov.w #0x2480, r5 ; 0x2480 = blank icon 8x8 ROM:0000438A mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000438A ; battle: ROM:0000438A ; 0 - battle opening animation ROM:0000438A ; 1 - "XYZ appeared" message ROM:0000438A ; 2 - "attack evade catch" directions shown ROM:0000438A ; 3 - our action taken. details in gCurSubstateF ROM:0000438A ; 4 - poke action taken. details in gCurSubstateF ROM:0000438A ; 5 - "was too strong" ROM:0000438A ; 6 - we lost ROM:0000438A ; 7 - fled ROM:0000438A ; 8 - staredown ROM:0000438A ; 9 - almost had it ROM:0000438A ; 10 - "threw a pokeball" ROM:0000438A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000438A ; 12, 14 - pokeball flying ROM:0000438A ; 13 - pokeball flying ROM:0000438A ; 15 - catch animation plays ROM:0000438A ; 16 - caught! ROM:0000438A ; switcht: ROM:0000438A ; cur slected poke name ROM:0000438E cmp.b #4, r0l ROM:00004390 bhi loc_43B4:8 ROM:00004392 mov.w r5, r0 ROM:00004394 mov.w #0x10, r1 ROM:00004398 mov.w r6, e0 ROM:0000439A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000439E mov.w r6, e0 ROM:000043A0 mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:000043A0 ; battle: ROM:000043A0 ; 0 - battle opening animation ROM:000043A0 ; 1 - "XYZ appeared" message ROM:000043A0 ; 2 - "attack evade catch" directions shown ROM:000043A0 ; 3 - our action taken. details in gCurSubstateF ROM:000043A0 ; 4 - poke action taken. details in gCurSubstateF ROM:000043A0 ; 5 - "was too strong" ROM:000043A0 ; 6 - we lost ROM:000043A0 ; 7 - fled ROM:000043A0 ; 8 - staredown ROM:000043A0 ; 9 - almost had it ROM:000043A0 ; 10 - "threw a pokeball" ROM:000043A0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000043A0 ; 12, 14 - pokeball flying ROM:000043A0 ; 13 - pokeball flying ROM:000043A0 ; 15 - catch animation plays ROM:000043A0 ; 16 - caught! ROM:000043A0 ; switcht: ROM:000043A0 ; cur slected poke name ROM:000043A4 extu.w r1 ROM:000043A6 mov.b @(GOING_AWAY_ANIMATION_Y_COORDS,er1), r0h ROM:000043AA mov.b #8, r1h ROM:000043AC mov.b r1h, r1l ROM:000043AE mov.b #0x2C, r0l ; ',' ROM:000043B0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000043B4 ROM:000043B4 loc_43B4: ; CODE XREF: drawMovingBlankIconWithBarsOnTopAndBottom+1Ej ROM:000043B4 mov.b #3, r0l ROM:000043B6 push.w r0 ROM:000043B8 mov.w #0x860, r1 ROM:000043BC sub.w r0, r0 ROM:000043BE jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:000043C2 adds #2, sp ROM:000043C4 mov.b #3, r0l ROM:000043C6 push.w r0 ROM:000043C8 mov.w #0x860, r1 ROM:000043CC mov.w #0x3800, r0 ROM:000043D0 jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:000043D4 adds #2, sp ROM:000043D6 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000043D6 ; battle: ROM:000043D6 ; 0 - battle opening animation ROM:000043D6 ; 1 - "XYZ appeared" message ROM:000043D6 ; 2 - "attack evade catch" directions shown ROM:000043D6 ; 3 - our action taken. details in gCurSubstateF ROM:000043D6 ; 4 - poke action taken. details in gCurSubstateF ROM:000043D6 ; 5 - "was too strong" ROM:000043D6 ; 6 - we lost ROM:000043D6 ; 7 - fled ROM:000043D6 ; 8 - staredown ROM:000043D6 ; 9 - almost had it ROM:000043D6 ; 10 - "threw a pokeball" ROM:000043D6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000043D6 ; 12, 14 - pokeball flying ROM:000043D6 ; 13 - pokeball flying ROM:000043D6 ; 15 - catch animation plays ROM:000043D6 ; 16 - caught! ROM:000043D6 ; switcht: ROM:000043D6 ; cur slected poke name ROM:000043DA inc.b r0l ROM:000043DC mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000043DC ; battle: ROM:000043DC ; 0 - battle opening animation ROM:000043DC ; 1 - "XYZ appeared" message ROM:000043DC ; 2 - "attack evade catch" directions shown ROM:000043DC ; 3 - our action taken. details in gCurSubstateF ROM:000043DC ; 4 - poke action taken. details in gCurSubstateF ROM:000043DC ; 5 - "was too strong" ROM:000043DC ; 6 - we lost ROM:000043DC ; 7 - fled ROM:000043DC ; 8 - staredown ROM:000043DC ; 9 - almost had it ROM:000043DC ; 10 - "threw a pokeball" ROM:000043DC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000043DC ; 12, 14 - pokeball flying ROM:000043DC ; 13 - pokeball flying ROM:000043DC ; 15 - catch animation plays ROM:000043DC ; 16 - caught! ROM:000043DC ; switcht: ROM:000043DC ; cur slected poke name ROM:000043E0 jmp epilogue_common_pop_r6_r5_r2:24 ROM:000043E0 ; End of function drawMovingBlankIconWithBarsOnTopAndBottom ROM:000043E0 ROM:000043E4 ROM:000043E4 ; =============== S U B R O U T I N E ======================================= ROM:000043E4 ROM:000043E4 ROM:000043E4 pokemonDepartureHandlerLikely: ; CODE XREF: drawSomethignDepartingandCompletedMessage:loc_4524p ROM:000043E4 push.w r2 ROM:000043E6 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000043EA mov.w #0x180, r0 ROM:000043EE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000043F2 mov.b #5, r1l ROM:000043F4 mov.w #0x2000, r0 ROM:000043F8 jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:000043FC mov.w #0xE, r1 ROM:00004400 mov.w #0xE30, r0 ; "has left." ROM:00004404 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00004404 ; ROM:00004404 ; //always drawn at x = 0 ROM:00004404 ; ROM:00004408 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004408 ; battle: ROM:00004408 ; 0 - battle opening animation ROM:00004408 ; 1 - "XYZ appeared" message ROM:00004408 ; 2 - "attack evade catch" directions shown ROM:00004408 ; 3 - our action taken. details in gCurSubstateF ROM:00004408 ; 4 - poke action taken. details in gCurSubstateF ROM:00004408 ; 5 - "was too strong" ROM:00004408 ; 6 - we lost ROM:00004408 ; 7 - fled ROM:00004408 ; 8 - staredown ROM:00004408 ; 9 - almost had it ROM:00004408 ; 10 - "threw a pokeball" ROM:00004408 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004408 ; 12, 14 - pokeball flying ROM:00004408 ; 13 - pokeball flying ROM:00004408 ; 15 - catch animation plays ROM:00004408 ; 16 - caught! ROM:00004408 ; switcht: ROM:00004408 ; cur slected poke name ROM:0000440C cmp.b #0x10, r0l ROM:0000440E bcc loc_4416:8 ROM:00004410 inc.b r0l ROM:00004412 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004412 ; battle: ROM:00004412 ; 0 - battle opening animation ROM:00004412 ; 1 - "XYZ appeared" message ROM:00004412 ; 2 - "attack evade catch" directions shown ROM:00004412 ; 3 - our action taken. details in gCurSubstateF ROM:00004412 ; 4 - poke action taken. details in gCurSubstateF ROM:00004412 ; 5 - "was too strong" ROM:00004412 ; 6 - we lost ROM:00004412 ; 7 - fled ROM:00004412 ; 8 - staredown ROM:00004412 ; 9 - almost had it ROM:00004412 ; 10 - "threw a pokeball" ROM:00004412 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004412 ; 12, 14 - pokeball flying ROM:00004412 ; 13 - pokeball flying ROM:00004412 ; 15 - catch animation plays ROM:00004412 ; 16 - caught! ROM:00004412 ; switcht: ROM:00004412 ; cur slected poke name ROM:00004416 ROM:00004416 loc_4416: ; CODE XREF: pokemonDepartureHandlerLikely+2Aj ROM:00004416 jsr is_F7C4_nonzero:24 ROM:0000441A mov.b r0l, r0l ROM:0000441C bne loc_4430:8 ROM:0000441E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000441E ; battle: ROM:0000441E ; 0 - battle opening animation ROM:0000441E ; 1 - "XYZ appeared" message ROM:0000441E ; 2 - "attack evade catch" directions shown ROM:0000441E ; 3 - our action taken. details in gCurSubstateF ROM:0000441E ; 4 - poke action taken. details in gCurSubstateF ROM:0000441E ; 5 - "was too strong" ROM:0000441E ; 6 - we lost ROM:0000441E ; 7 - fled ROM:0000441E ; 8 - staredown ROM:0000441E ; 9 - almost had it ROM:0000441E ; 10 - "threw a pokeball" ROM:0000441E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000441E ; 12, 14 - pokeball flying ROM:0000441E ; 13 - pokeball flying ROM:0000441E ; 15 - catch animation plays ROM:0000441E ; 16 - caught! ROM:0000441E ; switcht: ROM:0000441E ; cur slected poke name ROM:00004422 cmp.b #8, r0l ROM:00004424 bls loc_4430:8 ROM:00004426 jsr someStateVarShuffling:24 ROM:0000442A sub.b r0l, r0l ROM:0000442C jsr setCurrentlyActiveView:24 ROM:00004430 ROM:00004430 loc_4430: ; CODE XREF: pokemonDepartureHandlerLikely+38j ROM:00004430 ; pokemonDepartureHandlerLikely+40j ROM:00004430 pop.w r2 ROM:00004432 rts ROM:00004432 ; End of function pokemonDepartureHandlerLikely ROM:00004432 ROM:00004434 ROM:00004434 ; =============== S U B R O U T I N E ======================================= ROM:00004434 ROM:00004434 ROM:00004434 drawPokewalkerAndCompletedMessage: ; CODE XREF: drawSomethignDepartingandCompletedMessage:loc_452Ap ROM:00004434 push.w r2 ROM:00004436 push.w r5 ROM:00004438 push.w r6 ROM:0000443A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000443E mov.w #0x100, r0 ROM:00004442 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004446 mov.w r0, r6 ROM:00004448 mov.w #0x2350, r5 ; 0x2350 = pokewalker image, blank screen, 32x32 ROM:0000444C mov.w r0, e0 ROM:0000444E mov.w r5, r0 ROM:00004450 mov.w #0x100, r1 ROM:00004454 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004458 mov.w r6, e0 ROM:0000445A mov.w #0x2020, r1 ROM:0000445E mov.w #0x1020, r0 ROM:00004462 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004466 mov.w #0xF, r1 ROM:0000446A mov.w #0x1030, r0 ; "Completed!" ROM:0000446E jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000446E ; ROM:0000446E ; //always drawn at x = 0 ROM:0000446E ; ROM:00004472 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004472 ; battle: ROM:00004472 ; 0 - battle opening animation ROM:00004472 ; 1 - "XYZ appeared" message ROM:00004472 ; 2 - "attack evade catch" directions shown ROM:00004472 ; 3 - our action taken. details in gCurSubstateF ROM:00004472 ; 4 - poke action taken. details in gCurSubstateF ROM:00004472 ; 5 - "was too strong" ROM:00004472 ; 6 - we lost ROM:00004472 ; 7 - fled ROM:00004472 ; 8 - staredown ROM:00004472 ; 9 - almost had it ROM:00004472 ; 10 - "threw a pokeball" ROM:00004472 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004472 ; 12, 14 - pokeball flying ROM:00004472 ; 13 - pokeball flying ROM:00004472 ; 15 - catch animation plays ROM:00004472 ; 16 - caught! ROM:00004472 ; switcht: ROM:00004472 ; cur slected poke name ROM:00004476 cmp.b #0x10, r0l ROM:00004478 bcc loc_4480:8 ROM:0000447A inc.b r0l ROM:0000447C mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000447C ; battle: ROM:0000447C ; 0 - battle opening animation ROM:0000447C ; 1 - "XYZ appeared" message ROM:0000447C ; 2 - "attack evade catch" directions shown ROM:0000447C ; 3 - our action taken. details in gCurSubstateF ROM:0000447C ; 4 - poke action taken. details in gCurSubstateF ROM:0000447C ; 5 - "was too strong" ROM:0000447C ; 6 - we lost ROM:0000447C ; 7 - fled ROM:0000447C ; 8 - staredown ROM:0000447C ; 9 - almost had it ROM:0000447C ; 10 - "threw a pokeball" ROM:0000447C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000447C ; 12, 14 - pokeball flying ROM:0000447C ; 13 - pokeball flying ROM:0000447C ; 15 - catch animation plays ROM:0000447C ; 16 - caught! ROM:0000447C ; switcht: ROM:0000447C ; cur slected poke name ROM:00004480 ROM:00004480 loc_4480: ; CODE XREF: drawPokewalkerAndCompletedMessage+44j ROM:00004480 jsr is_F7C4_nonzero:24 ROM:00004484 mov.b r0l, r0l ROM:00004486 bne loc_449A:8 ROM:00004488 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004488 ; battle: ROM:00004488 ; 0 - battle opening animation ROM:00004488 ; 1 - "XYZ appeared" message ROM:00004488 ; 2 - "attack evade catch" directions shown ROM:00004488 ; 3 - our action taken. details in gCurSubstateF ROM:00004488 ; 4 - poke action taken. details in gCurSubstateF ROM:00004488 ; 5 - "was too strong" ROM:00004488 ; 6 - we lost ROM:00004488 ; 7 - fled ROM:00004488 ; 8 - staredown ROM:00004488 ; 9 - almost had it ROM:00004488 ; 10 - "threw a pokeball" ROM:00004488 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004488 ; 12, 14 - pokeball flying ROM:00004488 ; 13 - pokeball flying ROM:00004488 ; 15 - catch animation plays ROM:00004488 ; 16 - caught! ROM:00004488 ; switcht: ROM:00004488 ; cur slected poke name ROM:0000448C cmp.b #8, r0l ROM:0000448E bls loc_449A:8 ROM:00004490 jsr someStateVarShuffling:24 ROM:00004494 sub.b r0l, r0l ROM:00004496 jsr setCurrentlyActiveView:24 ROM:0000449A ROM:0000449A loc_449A: ; CODE XREF: drawPokewalkerAndCompletedMessage+52j ROM:0000449A ; drawPokewalkerAndCompletedMessage+5Aj ROM:0000449A jmp epilogue_common_pop_r6_r5_r2:24 ROM:0000449A ; End of function drawPokewalkerAndCompletedMessage ROM:0000449A ROM:0000449E ROM:0000449E ; =============== S U B R O U T I N E ======================================= ROM:0000449E ROM:0000449E ROM:0000449E interactionHandlerUnknonView_0x10: ; CODE XREF: interactionHandler:case_0x10p ROM:0000449E mov.b @gCurSubstateZ:16, r1l ; different per mode ROM:0000449E ; battle: ROM:0000449E ; 0 - battle opening animation ROM:0000449E ; 1 - "XYZ appeared" message ROM:0000449E ; 2 - "attack evade catch" directions shown ROM:0000449E ; 3 - our action taken. details in gCurSubstateF ROM:0000449E ; 4 - poke action taken. details in gCurSubstateF ROM:0000449E ; 5 - "was too strong" ROM:0000449E ; 6 - we lost ROM:0000449E ; 7 - fled ROM:0000449E ; 8 - staredown ROM:0000449E ; 9 - almost had it ROM:0000449E ; 10 - "threw a pokeball" ROM:0000449E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000449E ; 12, 14 - pokeball flying ROM:0000449E ; 13 - pokeball flying ROM:0000449E ; 15 - catch animation plays ROM:0000449E ; 16 - caught! ROM:0000449E ; switcht: ROM:0000449E ; cur slected poke name ROM:000044A2 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000044A2 ; gifted items view: this is item number that has focus and arrow ROM:000044A2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000044A2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000044A2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000044A6 cmp.b #5, r0l ROM:000044A8 beq loc_44B8:8 ROM:000044AA cmp.b #2, r0l ROM:000044AC beq loc_44C6:8 ROM:000044AE cmp.b #0, r0l ROM:000044B0 beq loc_44D8:8 ROM:000044B2 cmp.b #6, r0l ROM:000044B4 bne locret_44F2:8 ROM:000044B6 bra loc_44E0:8 ROM:000044B8 ; --------------------------------------------------------------------------- ROM:000044B8 ROM:000044B8 loc_44B8: ; CODE XREF: interactionHandlerUnknonView_0x10+Aj ROM:000044B8 sub.b r0l, r0l ROM:000044BA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000044BA ; battle: ROM:000044BA ; 0 - battle opening animation ROM:000044BA ; 1 - "XYZ appeared" message ROM:000044BA ; 2 - "attack evade catch" directions shown ROM:000044BA ; 3 - our action taken. details in gCurSubstateF ROM:000044BA ; 4 - poke action taken. details in gCurSubstateF ROM:000044BA ; 5 - "was too strong" ROM:000044BA ; 6 - we lost ROM:000044BA ; 7 - fled ROM:000044BA ; 8 - staredown ROM:000044BA ; 9 - almost had it ROM:000044BA ; 10 - "threw a pokeball" ROM:000044BA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000044BA ; 12, 14 - pokeball flying ROM:000044BA ; 13 - pokeball flying ROM:000044BA ; 15 - catch animation plays ROM:000044BA ; 16 - caught! ROM:000044BA ; switcht: ROM:000044BA ; cur slected poke name ROM:000044BE mov.b #2, r0h ROM:000044C0 mov.b r0h, @gCurSubstateY:16 ; Substate: ROM:000044C0 ; gifted items view: this is item number that has focus and arrow ROM:000044C0 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000044C0 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000044C0 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000044C4 bra loc_44EE:8 ROM:000044C6 ; --------------------------------------------------------------------------- ROM:000044C6 ROM:000044C6 loc_44C6: ; CODE XREF: interactionHandlerUnknonView_0x10+Ej ROM:000044C6 cmp.b #8, r1l ROM:000044C8 bls locret_44F2:8 ROM:000044CA sub.b r0l, r0l ROM:000044CC mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000044CC ; battle: ROM:000044CC ; 0 - battle opening animation ROM:000044CC ; 1 - "XYZ appeared" message ROM:000044CC ; 2 - "attack evade catch" directions shown ROM:000044CC ; 3 - our action taken. details in gCurSubstateF ROM:000044CC ; 4 - poke action taken. details in gCurSubstateF ROM:000044CC ; 5 - "was too strong" ROM:000044CC ; 6 - we lost ROM:000044CC ; 7 - fled ROM:000044CC ; 8 - staredown ROM:000044CC ; 9 - almost had it ROM:000044CC ; 10 - "threw a pokeball" ROM:000044CC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000044CC ; 12, 14 - pokeball flying ROM:000044CC ; 13 - pokeball flying ROM:000044CC ; 15 - catch animation plays ROM:000044CC ; 16 - caught! ROM:000044CC ; switcht: ROM:000044CC ; cur slected poke name ROM:000044D0 mov.b #1, r0l ROM:000044D2 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000044D2 ; gifted items view: this is item number that has focus and arrow ROM:000044D2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000044D2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000044D2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000044D6 bra locret_44F2:8 ROM:000044D8 ; --------------------------------------------------------------------------- ROM:000044D8 ROM:000044D8 loc_44D8: ; CODE XREF: interactionHandlerUnknonView_0x10+12j ROM:000044D8 cmp.b #9, r1l ROM:000044DA bcs locret_44F2:8 ROM:000044DC mov.b #3, r0l ROM:000044DE bra loc_44E2:8 ROM:000044E0 ; --------------------------------------------------------------------------- ROM:000044E0 ROM:000044E0 loc_44E0: ; CODE XREF: interactionHandlerUnknonView_0x10+18j ROM:000044E0 mov.b #7, r0l ROM:000044E2 ROM:000044E2 loc_44E2: ; CODE XREF: interactionHandlerUnknonView_0x10+40j ROM:000044E2 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000044E2 ; gifted items view: this is item number that has focus and arrow ROM:000044E2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000044E2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000044E2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000044E6 sub.b r0l, r0l ROM:000044E8 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000044E8 ; battle: ROM:000044E8 ; 0 - battle opening animation ROM:000044E8 ; 1 - "XYZ appeared" message ROM:000044E8 ; 2 - "attack evade catch" directions shown ROM:000044E8 ; 3 - our action taken. details in gCurSubstateF ROM:000044E8 ; 4 - poke action taken. details in gCurSubstateF ROM:000044E8 ; 5 - "was too strong" ROM:000044E8 ; 6 - we lost ROM:000044E8 ; 7 - fled ROM:000044E8 ; 8 - staredown ROM:000044E8 ; 9 - almost had it ROM:000044E8 ; 10 - "threw a pokeball" ROM:000044E8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000044E8 ; 12, 14 - pokeball flying ROM:000044E8 ; 13 - pokeball flying ROM:000044E8 ; 15 - catch animation plays ROM:000044E8 ; 16 - caught! ROM:000044E8 ; switcht: ROM:000044E8 ; cur slected poke name ROM:000044EC mov.b #6, r0l ROM:000044EE ROM:000044EE loc_44EE: ; CODE XREF: interactionHandlerUnknonView_0x10+26j ROM:000044EE jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000044F2 ROM:000044F2 locret_44F2: ; CODE XREF: interactionHandlerUnknonView_0x10+16j ROM:000044F2 ; interactionHandlerUnknonView_0x10+2Aj ... ROM:000044F2 rts ROM:000044F2 ; End of function interactionHandlerUnknonView_0x10 ROM:000044F2 ROM:000044F4 ROM:000044F4 ; =============== S U B R O U T I N E ======================================= ROM:000044F4 ROM:000044F4 ROM:000044F4 drawSomethignDepartingandCompletedMessage: ROM:000044F4 ; CODE XREF: maybe_viewDoDisplay:case__0x10p ROM:000044F4 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000044F4 ; gifted items view: this is item number that has focus and arrow ROM:000044F4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000044F4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000044F4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000044F8 cmp.b #2, r0l ROM:000044FA beq loc_4512:8 ROM:000044FC cmp.b #1, r0l ROM:000044FE beq loc_4518:8 ROM:00004500 cmp.b #0, r0l ROM:00004502 beq loc_451E:8 ROM:00004504 cmp.b #3, r0l ROM:00004506 beq loc_4524:8 ROM:00004508 cmp.b #6, r0l ROM:0000450A beq loc_452A:8 ROM:0000450C cmp.b #7, r0l ROM:0000450E bne loc_452E:8 ROM:00004510 bra loc_452A:8 ROM:00004512 ; --------------------------------------------------------------------------- ROM:00004512 ROM:00004512 loc_4512: ; CODE XREF: drawSomethignDepartingandCompletedMessage+6j ROM:00004512 jsr drawLargePokemonImageWithBarsOnTopAndBottomOfScreen2:24 ; literally same as drawLargePokemonImageWithBarsOnTopAndBottomOfScreen() ROM:00004516 bra loc_452E:8 ROM:00004518 ; --------------------------------------------------------------------------- ROM:00004518 ROM:00004518 loc_4518: ; CODE XREF: drawSomethignDepartingandCompletedMessage+Aj ROM:00004518 jsr drawCloudWithBarsOnTopAndBottomOfScreen:24 ROM:0000451C bra loc_452E:8 ROM:0000451E ; --------------------------------------------------------------------------- ROM:0000451E ROM:0000451E loc_451E: ; CODE XREF: drawSomethignDepartingandCompletedMessage+Ej ROM:0000451E jsr drawMovingBlankIconWithBarsOnTopAndBottom:24 ROM:00004522 bra loc_452E:8 ROM:00004524 ; --------------------------------------------------------------------------- ROM:00004524 ROM:00004524 loc_4524: ; CODE XREF: drawSomethignDepartingandCompletedMessage+12j ROM:00004524 jsr pokemonDepartureHandlerLikely:24 ROM:00004528 bra loc_452E:8 ROM:0000452A ; --------------------------------------------------------------------------- ROM:0000452A ROM:0000452A loc_452A: ; CODE XREF: drawSomethignDepartingandCompletedMessage+16j ROM:0000452A ; drawSomethignDepartingandCompletedMessage+1Cj ROM:0000452A jsr drawPokewalkerAndCompletedMessage:24 ROM:0000452E ROM:0000452E loc_452E: ; CODE XREF: drawSomethignDepartingandCompletedMessage+1Aj ROM:0000452E ; drawSomethignDepartingandCompletedMessage+22j ... ROM:0000452E sub.w r0, r0 ROM:00004530 jmp drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00004530 ; End of function drawSomethignDepartingandCompletedMessage ROM:00004530 ROM:00004534 ; --------------------------------------------------------------------------- ROM:00004534 ; START OF FUNCTION CHUNK FOR drawBallFropFromTopOfScreen ROM:00004534 ROM:00004534 epilogue_common_pop_r6_r5_r2: ; CODE XREF: drawBallFropFromTopOfScreen+74j ROM:00004534 ; drawPokeballInMiddleOfScreen+96j ... ROM:00004534 pop.w r6 ROM:00004536 pop.w r5 ROM:00004538 pop.w r2 ROM:0000453A rts ROM:0000453A ; END OF FUNCTION CHUNK FOR drawBallFropFromTopOfScreen ROM:0000453C ; --------------------------------------------------------------------------- ROM:0000453C ; START OF FUNCTION CHUNK FOR drawLargePokemonImageWithBarsOnTopAndBottomOfScreen ROM:0000453C ROM:0000453C common_epilogue_6: ; CODE XREF: drawLargePokemonImageWithBarsOnTopAndBottomOfScreen+3Cj ROM:0000453C ; drawLargePokemonImageWithBarsOnTopAndBottomOfScreen2+3Cj ROM:0000453C pop.w r5 ROM:0000453E pop.l er3 ROM:00004542 pop.w r2 ROM:00004544 rts ROM:00004544 ; END OF FUNCTION CHUNK FOR drawLargePokemonImageWithBarsOnTopAndBottomOfScreen ROM:00004546 ROM:00004546 ; =============== S U B R O U T I N E ======================================= ROM:00004546 ROM:00004546 ; ( ROM:00004546 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00004546 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00004546 ; r1l = eventTYpe ROM:00004546 ; r1h = boolean isOnSpecialEventRoute ROM:00004546 ; e1 = extraInfo (eg: item type) ROM:00004546 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00004546 ; ) ROM:00004546 ROM:00004546 logEvent: ; CODE XREF: startWalkEepromActions+18Cp ROM:00004546 ; recordPokeCaughtNormal:log_the_eventp ... ROM:00004546 ROM:00004546 ; FUNCTION CHUNK AT ROM:00008ABC SIZE 0000000E BYTES ROM:00004546 ROM:00004546 RouteInfo = r5 ROM:00004546 tmpLogEntryBuf = r6 ROM:00004546 eventType = r3l ROM:00004546 extraInfo = e5 ROM:00004546 curEntryPtr = r4 ROM:00004546 tmpLogEntryBuf_ = er6 ROM:00004546 RouteInfo_ = er5 ROM:00004546 push.w r3 ROM:00004548 push.w curEntryPtr ROM:0000454A push.l RouteInfo_ ROM:0000454E push.l tmpLogEntryBuf_ ROM:00004552 subs #2, sp ROM:00004554 mov.w r0, RouteInfo ROM:00004556 mov.w e0, tmpLogEntryBuf ROM:00004558 mov.b r1l, eventType ROM:0000455A mov.b r1h, @sp ROM:0000455C mov.w e1, extraInfo ROM:0000455E mov.b @likelyCurEventLogPointer:16, r4l ROM:00004562 mov.b #0x88, r4h ; 'ê' ROM:00004564 mulxu.b r4h, curEntryPtr ROM:00004566 add.w #0xCF0C, curEntryPtr ROM:0000456A mov.w #0x84, r0 ; 'ä' ROM:0000456E add.w curEntryPtr, r0 ROM:00004570 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00004574 mov.b r0l, r3h ROM:00004576 beq entry_is_empty_or_not_type_0x1B:8 ROM:00004578 cmp.b #0x1B, eventType ROM:0000457A beq out:16 ROM:0000457E ROM:0000457E entry_is_empty_or_not_type_0x1B: ; CODE XREF: logEvent+30j ROM:0000457E cmp.b #0x19, r3h ROM:00004580 bne loc_45A4:8 ROM:00004582 ROM:00004582 entry_is_type_0x19: ; this typ eentry is spared and not erased ROM:00004582 mov.b @likelyCurEventLogPointer:16, r0l ROM:00004586 extu.w r0 ROM:00004588 inc.w #1, r0 ROM:0000458A exts.l er0 ROM:0000458C mov.w #0x17, r1 ROM:00004590 divxs.w r1, er0 ROM:00004594 mov.w e0, r0 ; (idx+1)%23 ROM:00004596 mov.b r0l, @likelyCurEventLogPointer:16 ROM:0000459A mov.b r0l, r4l ROM:0000459C mov.b #0x88, r4h ; 'ê' ROM:0000459E mulxu.b r4h, curEntryPtr ROM:000045A0 add.w #0xCF0C, curEntryPtr ROM:000045A4 ROM:000045A4 loc_45A4: ; CODE XREF: logEvent+3Aj ROM:000045A4 cmp.b #0xA, eventType ; ???? ROM:000045A6 bls loc_45BC:8 ROM:000045A8 ROM:000045A8 zero_the_entry_buf: ROM:000045A8 mov.w tmpLogEntryBuf, e0 ROM:000045AA sub.w e6, e6 ROM:000045AC sub.b r1l, r1l ROM:000045AE ROM:000045AE loc_45AE: ; CODE XREF: logEvent+74j ROM:000045AE mov.w e0, r0 ROM:000045B0 mov.b r1l, @er0 ROM:000045B2 inc.w #1, e0 ROM:000045B4 inc.w #1, e6 ROM:000045B6 cmp.w #0x88, e6 ; 'ê' ROM:000045BA bcs loc_45AE:8 ROM:000045BC ROM:000045BC loc_45BC: ; CODE XREF: logEvent+60j ROM:000045BC mov.b eventType, @(0x84:16,tmpLogEntryBuf_) ROM:000045C0 mov.w extraInfo, @(0xE:16,tmpLogEntryBuf_) ROM:000045C4 mov.l @RamCache_lastSyncTime:16, er0 ROM:000045CA mov.l er0, @tmpLogEntryBuf_ ROM:000045CE mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:000045D2 mov.w r0, @(0x78:16,tmpLogEntryBuf_) ROM:000045D6 mov.l @stepCountTodaySoFar:16, er0 ROM:000045DC mov.l er0, @(0x7C:16,tmpLogEntryBuf_) ROM:000045E2 mov.w @RouteInfo_, r0 ROM:000045E4 mov.w r0, @(0xA:16,tmpLogEntryBuf_) ROM:000045E8 ROM:000045E8 copy_poke_nickname: ROM:000045E8 sub.w e6, e6 ROM:000045EA ROM:000045EA loc_45EA: ; CODE XREF: logEvent+BEj ROM:000045EA mov.w #0x10, r0 ROM:000045EE add.w RouteInfo, r0 ROM:000045F0 add.w e6, r0 ; routeInfo + 0x10 + index ROM:000045F2 mov.w #0x20, r1 ; ' ' ROM:000045F6 add.w tmpLogEntryBuf, r1 ROM:000045F8 add.w e6, r1 ; logEntry + 0x20 + index ROM:000045FA mov.b @er0, r0l ROM:000045FC mov.b r0l, @er1 ROM:000045FE inc.w #1, e6 ROM:00004600 cmp.w #0x16, e6 ROM:00004604 blt loc_45EA:8 ROM:00004606 mov.b @(0x26:16,RouteInfo_), r0l ROM:0000460A mov.b r0l, @(0x77:16,tmpLogEntryBuf_) ROM:0000460E mov.b @(0xD:16,RouteInfo_), r0l ROM:00004612 and.b #0x1F, r0l ROM:00004614 mov.b @(0x85:16,tmpLogEntryBuf_), r0h ROM:00004618 and.b #0xE0, r0h ROM:0000461A and.b #0x1F, r0l ROM:0000461C or.b r0l, r0h ROM:0000461E mov.b r0h, @(0x85:16,tmpLogEntryBuf_) ROM:00004622 mov.b @(0xD:16,RouteInfo_), r0l ROM:00004626 rotl.b r0l ROM:00004628 rotl.b r0l ROM:0000462A rotl.b r0l ROM:0000462C and.b #3, r0l ROM:0000462E mov.b r0l, r1l ROM:00004630 mov.w #0x85, r0 ; 'à' ROM:00004634 add.w tmpLogEntryBuf, r0 ROM:00004636 mov.w #0x102, r2 ROM:0000463A jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:0000463E mov.w #0x85, r0 ; 'à' ROM:00004642 add.w tmpLogEntryBuf, r0 ROM:00004644 mov.b @(0xE:16,RouteInfo_), r1l ROM:00004648 bld #1, r1l ROM:0000464A bst #7, @er0 ROM:0000464E mov.b @sp, r0l ROM:00004650 bne on_special_ebent_route:8 ROM:00004652 ROM:00004652 on_normal_route_0: ; route info image ROM:00004652 mov.b @(0x27:16,RouteInfo_), r0l ROM:00004656 mov.b r0l, @(0x76:16,tmpLogEntryBuf_) ROM:0000465A sub.w e6, e6 ROM:0000465C ROM:0000465C loc_465C: ; CODE XREF: logEvent+132j ROM:0000465C mov.w #0x28, r0 ; '(' ROM:00004660 add.w RouteInfo, r0 ROM:00004662 add.w e6, r0 ; routeInfo + 0x28 + index ROM:00004664 mov.w #0x4C, r1 ; 'L' ROM:00004668 add.w tmpLogEntryBuf, r1 ROM:0000466A add.w e6, r1 ; logEntry + 0x4c + idx ROM:0000466C mov.b @er0, r0l ROM:0000466E mov.b r0l, @er1 ROM:00004670 inc.w #1, e6 ROM:00004672 cmp.w #0x2A, e6 ; '*' ROM:00004676 bge route_name_and_image_logged:8 ROM:00004678 bra loc_465C:8 ROM:0000467A ; --------------------------------------------------------------------------- ROM:0000467A ROM:0000467A on_special_ebent_route: ; CODE XREF: logEvent+10Aj ROM:0000467A mov.w #0xBF06, r0 ROM:0000467E jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00004682 mov.b r0l, @(0x76:16,tmpLogEntryBuf_) ROM:00004686 mov.w #0xBF50, r0 ROM:0000468A mov.w #0x2A, r1 ; '*' ROM:0000468E mov.w #0x4C, e0 ; 'L' ROM:00004692 add.w tmpLogEntryBuf, e0 ROM:00004694 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004698 ROM:00004698 route_name_and_image_logged: ; CODE XREF: logEvent+130j ROM:00004698 mov.b @(0x11:16,sp), r0l ; param on stack - which available poke is this regarding ROM:0000469C cmp.b #1, r0l ROM:0000469E bcs loc_46A4:8 ROM:000046A0 cmp.b #3, r0l ROM:000046A2 bls normal_route_poke:8 ROM:000046A4 ROM:000046A4 loc_46A4: ; CODE XREF: logEvent+158j ROM:000046A4 cmp.b #4, r0l ROM:000046A6 bne no_poke:16 ROM:000046AA bra event_poke:8 ROM:000046AC ; --------------------------------------------------------------------------- ROM:000046AC ROM:000046AC normal_route_poke: ; CODE XREF: logEvent+15Cj ROM:000046AC extu.w r0 ROM:000046AE dec.w #1, r0 ; index ROM:000046B0 mov.w #0x10, e0 ROM:000046B4 mulxu.w e0, er0 ROM:000046B6 mov.w #0x52, r1 ; 'R' ROM:000046BA add.w RouteInfo, r1 ; routeInfo + 0x52 + pokeIdx * 10 = wild poke info ROM:000046BC add.w r0, r1 ROM:000046BE mov.w @er1, r1 ; species ROM:000046C0 mov.w r1, @(0xC:16,tmpLogEntryBuf_) ROM:000046C4 mov.w #0x52, r1 ; 'R' ROM:000046C8 add.w RouteInfo, r1 ROM:000046CA add.w r0, r1 ROM:000046CC mov.b @(0xD:16,er1), r1l ; gender/form ROM:000046D0 and.b #0x1F, r1l ROM:000046D2 mov.b @(0x86:16,tmpLogEntryBuf_), r1h ROM:000046D6 and.b #0xE0, r1h ROM:000046D8 and.b #0x1F, r1l ROM:000046DA or.b r1l, r1h ROM:000046DC mov.b r1h, @(0x86:16,tmpLogEntryBuf_) ROM:000046E0 add.w #0x52, RouteInfo ; 'R' ROM:000046E4 add.w r0, RouteInfo ROM:000046E6 mov.b @(0xD:16,RouteInfo_), r5l ROM:000046EA rotl.b r5l ROM:000046EC rotl.b r5l ROM:000046EE rotl.b r5l ROM:000046F0 and.b #3, r5l ROM:000046F2 mov.w #0x86, r0 ; 'å' ROM:000046F6 add.w tmpLogEntryBuf, r0 ROM:000046F8 mov.b r5l, r1l ROM:000046FA bra loc_474E:8 ROM:000046FC ; --------------------------------------------------------------------------- ROM:000046FC ROM:000046FC event_poke: ; CODE XREF: logEvent+164j ROM:000046FC cmp.b #0xF, eventType ROM:000046FE beq evt_is_0x0f_or_0x10:8 ROM:00004700 cmp.b #0x10, eventType ROM:00004702 bne evt_nor_0x0f_or_0x10:8 ROM:00004704 ROM:00004704 evt_is_0x0f_or_0x10: ; CODE XREF: logEvent+1B8j ROM:00004704 mov.w #0xC, e0 ROM:00004708 add.w tmpLogEntryBuf, e0 ROM:0000470A mov.w #0xBF08, r0 ; event caught poke species ROM:0000470E bra loc_471A:8 ROM:00004710 ; --------------------------------------------------------------------------- ROM:00004710 ROM:00004710 evt_nor_0x0f_or_0x10: ; CODE XREF: logEvent+1BCj ROM:00004710 mov.w #0xC, e0 ROM:00004714 add.w tmpLogEntryBuf, e0 ROM:00004716 mov.w #0xBA44, r0 ; direct gifted poke species ROM:0000471A ROM:0000471A loc_471A: ; CODE XREF: logEvent+1C8j ROM:0000471A mov.w #2, r1 ROM:0000471E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004722 mov.w #0xBF0D, r0 ; XXX: bug. should be 0xBF15 ROM:00004726 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:0000472A mov.b r0l, r5l ROM:0000472C and.b #0x1F, r0l ROM:0000472E mov.b @(0x86:16,tmpLogEntryBuf_), r0h ROM:00004732 and.b #0xE0, r0h ROM:00004734 and.b #0x1F, r0l ROM:00004736 or.b r0l, r0h ROM:00004738 mov.b r0h, @(0x86:16,tmpLogEntryBuf_) ROM:0000473C mov.b r5l, r0l ROM:0000473E mov.b #0x20, r1l ; ' ' ROM:00004740 sub.b r0h, r0h ROM:00004742 divxu.b r1l, r0 ROM:00004744 and.b #3, r0l ROM:00004746 mov.b r0l, r1l ROM:00004748 mov.w #0x86, r0 ; 'å' ROM:0000474C add.w tmpLogEntryBuf, r0 ROM:0000474E ROM:0000474E loc_474E: ; CODE XREF: logEvent+1B4j ROM:0000474E mov.w #0x102, r2 ROM:00004752 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00004756 ROM:00004756 no_poke: ; CODE XREF: logEvent+160j ROM:00004756 mov.w tmpLogEntryBuf, e0 ROM:00004758 mov.w curEntryPtr, r0 ROM:0000475A mov.w #0x88, r1 ; 'ê' ROM:0000475E jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00004762 mov.b @likelyCurEventLogPointer:16, r0l ROM:00004766 extu.w r0 ROM:00004768 inc.w #1, r0 ROM:0000476A exts.l er0 ROM:0000476C mov.w #0x17, r1 ROM:00004770 divxs.w r1, er0 ROM:00004774 mov.w e0, r0 ROM:00004776 mov.b r0l, @likelyCurEventLogPointer:16 ROM:0000477A mov.w #0x18, e1 ROM:0000477E mov.w #RamCache_totalSteps, r1 ROM:00004782 mov.l #0x2560156, er0 ROM:00004788 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00004788 ; ROM:00004788 ; see docs for readRedundantDataFromEeprom for format info ROM:0000478C ROM:0000478C out: ; CODE XREF: logEvent+34j ROM:0000478C adds #2, sp ROM:0000478E jmp common_epilogue_3:24 ROM:0000478E ; End of function logEvent ROM:0000478E ROM:00004792 ROM:00004792 ; =============== S U B R O U T I N E ======================================= ROM:00004792 ROM:00004792 ROM:00004792 goToDowsingMicroApp: ; CODE XREF: interactionHAndlerMainMenu+F8p ROM:00004792 sub.b r0l, r0l ROM:00004794 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004794 ; battle: ROM:00004794 ; 0 - battle opening animation ROM:00004794 ; 1 - "XYZ appeared" message ROM:00004794 ; 2 - "attack evade catch" directions shown ROM:00004794 ; 3 - our action taken. details in gCurSubstateF ROM:00004794 ; 4 - poke action taken. details in gCurSubstateF ROM:00004794 ; 5 - "was too strong" ROM:00004794 ; 6 - we lost ROM:00004794 ; 7 - fled ROM:00004794 ; 8 - staredown ROM:00004794 ; 9 - almost had it ROM:00004794 ; 10 - "threw a pokeball" ROM:00004794 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004794 ; 12, 14 - pokeball flying ROM:00004794 ; 13 - pokeball flying ROM:00004794 ; 15 - catch animation plays ROM:00004794 ; 16 - caught! ROM:00004794 ; switcht: ROM:00004794 ; cur slected poke name ROM:00004798 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00004798 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004798 ; ItemScreenHandler: ROM:00004798 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004798 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004798 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004798 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004798 ; 0x0010 - light grey pokeball ROM:00004798 ; 0x0020 - tiny map icon ROM:00004798 ; 0x0040 - found item #0 (slot nonempty) ROM:00004798 ; 0x0080 - found item #1 (slot nonempty) ROM:00004798 ; 0x0100 - found item #2 (slot nonempty) ROM:00004798 ; 0x0200 - grey item icon ROM:00004798 ; ItemRXed - what was RXed ROM:00004798 ; 0 - event pokemon ROM:00004798 ; 1 - special route ROM:00004798 ; 2 - item ROM:00004798 ; 3 - special ROM:00004798 ; 4 - stamp: heart ROM:00004798 ; 5 - stamp: spade ROM:00004798 ; 6 - stamp: diamond ROM:00004798 ; 7 - stamp: club ROM:00004798 ; switch: ROM:00004798 ; zero - pokemon does ROM:00004798 ; nonzero - item needs to be switched ROM:00004798 ; item RXed: ROM:00004798 ; what sort of thing was RXed: item, map, route, etc ROM:0000479C mov.b #2, r0h ROM:0000479E mov.b r0h, @gCurSubstateB:16 ; Substate: ROM:0000479E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000047A2 jsr rand:24 ROM:000047A6 shll.w r0 ROM:000047A8 shll.w r0 ROM:000047AA shll.w r0 ROM:000047AC mov.b r0h, r0l ROM:000047AE extu.w r0 ROM:000047B0 exts.l er0 ROM:000047B2 mov.w #6, r2 ROM:000047B6 divxs.w r2, er0 ROM:000047BA mov.w e0, r0 ROM:000047BC mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:000047BC ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000047C0 mov.b #0xFF, r0l ROM:000047C2 mov.b r0l, @gCurSubstateC:16 ROM:000047C6 sub.b r0l, r0l ROM:000047C8 mov.b r0l, @gCurSubstateD:16 ROM:000047CC rts ROM:000047CC ; End of function goToDowsingMicroApp ROM:000047CC ROM:000047CE ROM:000047CE ; =============== S U B R O U T I N E ======================================= ROM:000047CE ROM:000047CE ROM:000047CE interactionHandlerDowsing: ; CODE XREF: interactionHandler:case_0x02p ROM:000047CE mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000047CE ; battle: ROM:000047CE ; 0 - battle opening animation ROM:000047CE ; 1 - "XYZ appeared" message ROM:000047CE ; 2 - "attack evade catch" directions shown ROM:000047CE ; 3 - our action taken. details in gCurSubstateF ROM:000047CE ; 4 - poke action taken. details in gCurSubstateF ROM:000047CE ; 5 - "was too strong" ROM:000047CE ; 6 - we lost ROM:000047CE ; 7 - fled ROM:000047CE ; 8 - staredown ROM:000047CE ; 9 - almost had it ROM:000047CE ; 10 - "threw a pokeball" ROM:000047CE ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000047CE ; 12, 14 - pokeball flying ROM:000047CE ; 13 - pokeball flying ROM:000047CE ; 15 - catch animation plays ROM:000047CE ; 16 - caught! ROM:000047CE ; switcht: ROM:000047CE ; cur slected poke name ROM:000047D2 beq loc_47F0:8 ROM:000047D4 cmp.b #1, r0l ROM:000047D6 beq loc_4874:16 ROM:000047DA cmp.b #2, r0l ROM:000047DC beq loc_48D0:16 ROM:000047E0 cmp.b #3, r0l ROM:000047E2 beq loc_4958:16 ROM:000047E6 cmp.b #4, r0l ROM:000047E8 bne locret_499A:16 ROM:000047EC jmp loc_4984:24 ROM:000047F0 ; --------------------------------------------------------------------------- ROM:000047F0 ROM:000047F0 loc_47F0: ; CODE XREF: interactionHandlerDowsing+4j ROM:000047F0 mov.b #2, r0l ROM:000047F2 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000047F2 ; // 0x02 - enter ROM:000047F2 ; // 0x04 - left ROM:000047F2 ; // 0x08 - right ROM:000047F6 mov.b r0l, r0l ROM:000047F8 beq loc_4822:8 ROM:000047FA mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:000047FA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000047FA ; ItemScreenHandler: ROM:000047FA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000047FA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000047FA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000047FA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000047FA ; 0x0010 - light grey pokeball ROM:000047FA ; 0x0020 - tiny map icon ROM:000047FA ; 0x0040 - found item #0 (slot nonempty) ROM:000047FA ; 0x0080 - found item #1 (slot nonempty) ROM:000047FA ; 0x0100 - found item #2 (slot nonempty) ROM:000047FA ; 0x0200 - grey item icon ROM:000047FA ; ItemRXed - what was RXed ROM:000047FA ; 0 - event pokemon ROM:000047FA ; 1 - special route ROM:000047FA ; 2 - item ROM:000047FA ; 3 - special ROM:000047FA ; 4 - stamp: heart ROM:000047FA ; 5 - stamp: spade ROM:000047FA ; 6 - stamp: diamond ROM:000047FA ; 7 - stamp: club ROM:000047FA ; switch: ROM:000047FA ; zero - pokemon does ROM:000047FA ; nonzero - item needs to be switched ROM:000047FA ; item RXed: ROM:000047FA ; what sort of thing was RXed: item, map, route, etc ROM:000047FE mov.b @gCurSubstateC:16, r0h ROM:00004802 cmp.b r0h, r0l ROM:00004804 bne loc_480C:8 ROM:00004806 mov.b #1, r0l ROM:00004808 jmp loc_489E:24 ROM:0000480C ; --------------------------------------------------------------------------- ROM:0000480C ROM:0000480C loc_480C: ; CODE XREF: interactionHandlerDowsing+36j ROM:0000480C sub.b r0l, r0l ROM:0000480E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00004812 mov.b #1, r0l ROM:00004814 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004814 ; battle: ROM:00004814 ; 0 - battle opening animation ROM:00004814 ; 1 - "XYZ appeared" message ROM:00004814 ; 2 - "attack evade catch" directions shown ROM:00004814 ; 3 - our action taken. details in gCurSubstateF ROM:00004814 ; 4 - poke action taken. details in gCurSubstateF ROM:00004814 ; 5 - "was too strong" ROM:00004814 ; 6 - we lost ROM:00004814 ; 7 - fled ROM:00004814 ; 8 - staredown ROM:00004814 ; 9 - almost had it ROM:00004814 ; 10 - "threw a pokeball" ROM:00004814 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004814 ; 12, 14 - pokeball flying ROM:00004814 ; 13 - pokeball flying ROM:00004814 ; 15 - catch animation plays ROM:00004814 ; 16 - caught! ROM:00004814 ; switcht: ROM:00004814 ; cur slected poke name ROM:00004818 mov.b #4, r0l ROM:0000481A mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000481A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000481A ; ItemScreenHandler: ROM:0000481A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000481A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000481A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000481A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000481A ; 0x0010 - light grey pokeball ROM:0000481A ; 0x0020 - tiny map icon ROM:0000481A ; 0x0040 - found item #0 (slot nonempty) ROM:0000481A ; 0x0080 - found item #1 (slot nonempty) ROM:0000481A ; 0x0100 - found item #2 (slot nonempty) ROM:0000481A ; 0x0200 - grey item icon ROM:0000481A ; ItemRXed - what was RXed ROM:0000481A ; 0 - event pokemon ROM:0000481A ; 1 - special route ROM:0000481A ; 2 - item ROM:0000481A ; 3 - special ROM:0000481A ; 4 - stamp: heart ROM:0000481A ; 5 - stamp: spade ROM:0000481A ; 6 - stamp: diamond ROM:0000481A ; 7 - stamp: club ROM:0000481A ; switch: ROM:0000481A ; zero - pokemon does ROM:0000481A ; nonzero - item needs to be switched ROM:0000481A ; item RXed: ROM:0000481A ; what sort of thing was RXed: item, map, route, etc ROM:0000481E jmp locret_499A:24 ROM:00004822 ; --------------------------------------------------------------------------- ROM:00004822 ROM:00004822 loc_4822: ; CODE XREF: interactionHandlerDowsing+2Aj ROM:00004822 mov.b #4, r0l ROM:00004824 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00004824 ; // 0x02 - enter ROM:00004824 ; // 0x04 - left ROM:00004824 ; // 0x08 - right ROM:00004828 mov.b r0l, r0l ROM:0000482A beq loc_484C:8 ROM:0000482C mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000482C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000482C ; ItemScreenHandler: ROM:0000482C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000482C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000482C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000482C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000482C ; 0x0010 - light grey pokeball ROM:0000482C ; 0x0020 - tiny map icon ROM:0000482C ; 0x0040 - found item #0 (slot nonempty) ROM:0000482C ; 0x0080 - found item #1 (slot nonempty) ROM:0000482C ; 0x0100 - found item #2 (slot nonempty) ROM:0000482C ; 0x0200 - grey item icon ROM:0000482C ; ItemRXed - what was RXed ROM:0000482C ; 0 - event pokemon ROM:0000482C ; 1 - special route ROM:0000482C ; 2 - item ROM:0000482C ; 3 - special ROM:0000482C ; 4 - stamp: heart ROM:0000482C ; 5 - stamp: spade ROM:0000482C ; 6 - stamp: diamond ROM:0000482C ; 7 - stamp: club ROM:0000482C ; switch: ROM:0000482C ; zero - pokemon does ROM:0000482C ; nonzero - item needs to be switched ROM:0000482C ; item RXed: ROM:0000482C ; what sort of thing was RXed: item, map, route, etc ROM:00004830 extu.w r0 ROM:00004832 add.w #5, r0 ROM:00004836 exts.l er0 ROM:00004838 mov.w #6, r1 ROM:0000483C divxs.w r1, er0 ROM:00004840 mov.w e0, r0 ROM:00004842 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00004842 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004842 ; ItemScreenHandler: ROM:00004842 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004842 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004842 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004842 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004842 ; 0x0010 - light grey pokeball ROM:00004842 ; 0x0020 - tiny map icon ROM:00004842 ; 0x0040 - found item #0 (slot nonempty) ROM:00004842 ; 0x0080 - found item #1 (slot nonempty) ROM:00004842 ; 0x0100 - found item #2 (slot nonempty) ROM:00004842 ; 0x0200 - grey item icon ROM:00004842 ; ItemRXed - what was RXed ROM:00004842 ; 0 - event pokemon ROM:00004842 ; 1 - special route ROM:00004842 ; 2 - item ROM:00004842 ; 3 - special ROM:00004842 ; 4 - stamp: heart ROM:00004842 ; 5 - stamp: spade ROM:00004842 ; 6 - stamp: diamond ROM:00004842 ; 7 - stamp: club ROM:00004842 ; switch: ROM:00004842 ; zero - pokemon does ROM:00004842 ; nonzero - item needs to be switched ROM:00004842 ; item RXed: ROM:00004842 ; what sort of thing was RXed: item, map, route, etc ROM:00004846 mov.b #2, r0l ROM:00004848 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000484C ROM:0000484C loc_484C: ; CODE XREF: interactionHandlerDowsing+5Cj ROM:0000484C mov.b #8, r0l ROM:0000484E jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000484E ; // 0x02 - enter ROM:0000484E ; // 0x04 - left ROM:0000484E ; // 0x08 - right ROM:00004852 mov.b r0l, r0l ROM:00004854 beq locret_499A:16 ROM:00004858 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004858 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004858 ; ItemScreenHandler: ROM:00004858 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004858 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004858 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004858 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004858 ; 0x0010 - light grey pokeball ROM:00004858 ; 0x0020 - tiny map icon ROM:00004858 ; 0x0040 - found item #0 (slot nonempty) ROM:00004858 ; 0x0080 - found item #1 (slot nonempty) ROM:00004858 ; 0x0100 - found item #2 (slot nonempty) ROM:00004858 ; 0x0200 - grey item icon ROM:00004858 ; ItemRXed - what was RXed ROM:00004858 ; 0 - event pokemon ROM:00004858 ; 1 - special route ROM:00004858 ; 2 - item ROM:00004858 ; 3 - special ROM:00004858 ; 4 - stamp: heart ROM:00004858 ; 5 - stamp: spade ROM:00004858 ; 6 - stamp: diamond ROM:00004858 ; 7 - stamp: club ROM:00004858 ; switch: ROM:00004858 ; zero - pokemon does ROM:00004858 ; nonzero - item needs to be switched ROM:00004858 ; item RXed: ROM:00004858 ; what sort of thing was RXed: item, map, route, etc ROM:0000485C extu.w r0 ROM:0000485E inc.w #1, r0 ROM:00004860 exts.l er0 ROM:00004862 mov.w #6, r1 ROM:00004866 divxs.w r1, er0 ROM:0000486A mov.w e0, r0 ROM:0000486C mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:0000486C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000486C ; ItemScreenHandler: ROM:0000486C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000486C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000486C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000486C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000486C ; 0x0010 - light grey pokeball ROM:0000486C ; 0x0020 - tiny map icon ROM:0000486C ; 0x0040 - found item #0 (slot nonempty) ROM:0000486C ; 0x0080 - found item #1 (slot nonempty) ROM:0000486C ; 0x0100 - found item #2 (slot nonempty) ROM:0000486C ; 0x0200 - grey item icon ROM:0000486C ; ItemRXed - what was RXed ROM:0000486C ; 0 - event pokemon ROM:0000486C ; 1 - special route ROM:0000486C ; 2 - item ROM:0000486C ; 3 - special ROM:0000486C ; 4 - stamp: heart ROM:0000486C ; 5 - stamp: spade ROM:0000486C ; 6 - stamp: diamond ROM:0000486C ; 7 - stamp: club ROM:0000486C ; switch: ROM:0000486C ; zero - pokemon does ROM:0000486C ; nonzero - item needs to be switched ROM:0000486C ; item RXed: ROM:0000486C ; what sort of thing was RXed: item, map, route, etc ROM:00004870 mov.b #2, r0l ROM:00004872 bra loc_489E:8 ROM:00004874 ; --------------------------------------------------------------------------- ROM:00004874 ROM:00004874 loc_4874: ; CODE XREF: interactionHandlerDowsing+8j ROM:00004874 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00004874 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004874 ; ItemScreenHandler: ROM:00004874 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004874 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004874 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004874 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004874 ; 0x0010 - light grey pokeball ROM:00004874 ; 0x0020 - tiny map icon ROM:00004874 ; 0x0040 - found item #0 (slot nonempty) ROM:00004874 ; 0x0080 - found item #1 (slot nonempty) ROM:00004874 ; 0x0100 - found item #2 (slot nonempty) ROM:00004874 ; 0x0200 - grey item icon ROM:00004874 ; ItemRXed - what was RXed ROM:00004874 ; 0 - event pokemon ROM:00004874 ; 1 - special route ROM:00004874 ; 2 - item ROM:00004874 ; 3 - special ROM:00004874 ; 4 - stamp: heart ROM:00004874 ; 5 - stamp: spade ROM:00004874 ; 6 - stamp: diamond ROM:00004874 ; 7 - stamp: club ROM:00004874 ; switch: ROM:00004874 ; zero - pokemon does ROM:00004874 ; nonzero - item needs to be switched ROM:00004874 ; item RXed: ROM:00004874 ; what sort of thing was RXed: item, map, route, etc ROM:00004878 bne locret_499A:16 ROM:0000487C jsr is_F7C4_nonzero:24 ROM:00004880 mov.b r0l, r0l ROM:00004882 bne locret_499A:16 ROM:00004886 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004886 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004886 ; ItemScreenHandler: ROM:00004886 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004886 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004886 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004886 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004886 ; 0x0010 - light grey pokeball ROM:00004886 ; 0x0020 - tiny map icon ROM:00004886 ; 0x0040 - found item #0 (slot nonempty) ROM:00004886 ; 0x0080 - found item #1 (slot nonempty) ROM:00004886 ; 0x0100 - found item #2 (slot nonempty) ROM:00004886 ; 0x0200 - grey item icon ROM:00004886 ; ItemRXed - what was RXed ROM:00004886 ; 0 - event pokemon ROM:00004886 ; 1 - special route ROM:00004886 ; 2 - item ROM:00004886 ; 3 - special ROM:00004886 ; 4 - stamp: heart ROM:00004886 ; 5 - stamp: spade ROM:00004886 ; 6 - stamp: diamond ROM:00004886 ; 7 - stamp: club ROM:00004886 ; switch: ROM:00004886 ; zero - pokemon does ROM:00004886 ; nonzero - item needs to be switched ROM:00004886 ; item RXed: ROM:00004886 ; what sort of thing was RXed: item, map, route, etc ROM:0000488A mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:0000488A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000488E cmp.b r0h, r0l ROM:00004890 bne loc_48A6:8 ROM:00004892 mov.b #2, r0l ROM:00004894 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004894 ; battle: ROM:00004894 ; 0 - battle opening animation ROM:00004894 ; 1 - "XYZ appeared" message ROM:00004894 ; 2 - "attack evade catch" directions shown ROM:00004894 ; 3 - our action taken. details in gCurSubstateF ROM:00004894 ; 4 - poke action taken. details in gCurSubstateF ROM:00004894 ; 5 - "was too strong" ROM:00004894 ; 6 - we lost ROM:00004894 ; 7 - fled ROM:00004894 ; 8 - staredown ROM:00004894 ; 9 - almost had it ROM:00004894 ; 10 - "threw a pokeball" ROM:00004894 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004894 ; 12, 14 - pokeball flying ROM:00004894 ; 13 - pokeball flying ROM:00004894 ; 15 - catch animation plays ROM:00004894 ; 16 - caught! ROM:00004894 ; switcht: ROM:00004894 ; cur slected poke name ROM:00004898 jsr probablyPokeFoundRandomItem:24 ROM:0000489C mov.b #5, r0l ROM:0000489E ROM:0000489E loc_489E: ; CODE XREF: interactionHandlerDowsing+3Aj ROM:0000489E ; interactionHandlerDowsing+A4j ROM:0000489E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000048A2 jmp locret_499A:24 ROM:000048A6 ; --------------------------------------------------------------------------- ROM:000048A6 ROM:000048A6 loc_48A6: ; CODE XREF: interactionHandlerDowsing+C2j ROM:000048A6 mov.b #3, r0l ROM:000048A8 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000048A8 ; battle: ROM:000048A8 ; 0 - battle opening animation ROM:000048A8 ; 1 - "XYZ appeared" message ROM:000048A8 ; 2 - "attack evade catch" directions shown ROM:000048A8 ; 3 - our action taken. details in gCurSubstateF ROM:000048A8 ; 4 - poke action taken. details in gCurSubstateF ROM:000048A8 ; 5 - "was too strong" ROM:000048A8 ; 6 - we lost ROM:000048A8 ; 7 - fled ROM:000048A8 ; 8 - staredown ROM:000048A8 ; 9 - almost had it ROM:000048A8 ; 10 - "threw a pokeball" ROM:000048A8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000048A8 ; 12, 14 - pokeball flying ROM:000048A8 ; 13 - pokeball flying ROM:000048A8 ; 15 - catch animation plays ROM:000048A8 ; 16 - caught! ROM:000048A8 ; switcht: ROM:000048A8 ; cur slected poke name ROM:000048AC mov.b #4, r0l ROM:000048AE jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000048B2 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000048B2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000048B6 cmp.b #2, r0l ROM:000048B8 bne loc_48C2:8 ROM:000048BA mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:000048BA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000048BA ; ItemScreenHandler: ROM:000048BA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000048BA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000048BA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000048BA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000048BA ; 0x0010 - light grey pokeball ROM:000048BA ; 0x0020 - tiny map icon ROM:000048BA ; 0x0040 - found item #0 (slot nonempty) ROM:000048BA ; 0x0080 - found item #1 (slot nonempty) ROM:000048BA ; 0x0100 - found item #2 (slot nonempty) ROM:000048BA ; 0x0200 - grey item icon ROM:000048BA ; ItemRXed - what was RXed ROM:000048BA ; 0 - event pokemon ROM:000048BA ; 1 - special route ROM:000048BA ; 2 - item ROM:000048BA ; 3 - special ROM:000048BA ; 4 - stamp: heart ROM:000048BA ; 5 - stamp: spade ROM:000048BA ; 6 - stamp: diamond ROM:000048BA ; 7 - stamp: club ROM:000048BA ; switch: ROM:000048BA ; zero - pokemon does ROM:000048BA ; nonzero - item needs to be switched ROM:000048BA ; item RXed: ROM:000048BA ; what sort of thing was RXed: item, map, route, etc ROM:000048BE mov.b r0l, @gCurSubstateC:16 ROM:000048C2 ROM:000048C2 loc_48C2: ; CODE XREF: interactionHandlerDowsing+EAj ROM:000048C2 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:000048C2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000048C6 dec.b r0l ROM:000048C8 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:000048C8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000048CC jmp locret_499A:24 ROM:000048D0 ; --------------------------------------------------------------------------- ROM:000048D0 ROM:000048D0 loc_48D0: ; CODE XREF: interactionHandlerDowsing+Ej ROM:000048D0 mov.b #0xE, r0l ROM:000048D2 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000048D2 ; // 0x02 - enter ROM:000048D2 ; // 0x04 - left ROM:000048D2 ; // 0x08 - right ROM:000048D6 mov.b r0l, r0l ROM:000048D8 beq locret_499A:16 ROM:000048DC mov.b @RamCache_settingsByte:16, r0l ROM:000048E0 bld #0, r0l ROM:000048E2 bcs on_special_event_route:16 ROM:000048E6 ROM:000048E6 on_normal_route: ; ubstate for various modes ROM:000048E6 mov.b @gCurSubstateE:16, r6l ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:000048EA cmp.b #3, r6l ROM:000048EC bne loc_4900:8 ROM:000048EE mov.b #1, r0l ROM:000048F0 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:000048F0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000048F0 ; ItemScreenHandler: ROM:000048F0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000048F0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000048F0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000048F0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000048F0 ; 0x0010 - light grey pokeball ROM:000048F0 ; 0x0020 - tiny map icon ROM:000048F0 ; 0x0040 - found item #0 (slot nonempty) ROM:000048F0 ; 0x0080 - found item #1 (slot nonempty) ROM:000048F0 ; 0x0100 - found item #2 (slot nonempty) ROM:000048F0 ; 0x0200 - grey item icon ROM:000048F0 ; ItemRXed - what was RXed ROM:000048F0 ; 0 - event pokemon ROM:000048F0 ; 1 - special route ROM:000048F0 ; 2 - item ROM:000048F0 ; 3 - special ROM:000048F0 ; 4 - stamp: heart ROM:000048F0 ; 5 - stamp: spade ROM:000048F0 ; 6 - stamp: diamond ROM:000048F0 ; 7 - stamp: club ROM:000048F0 ; switch: ROM:000048F0 ; zero - pokemon does ROM:000048F0 ; nonzero - item needs to be switched ROM:000048F0 ; item RXed: ROM:000048F0 ; what sort of thing was RXed: item, map, route, etc ROM:000048F4 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:000048F4 ; gifted items view: this is item number that has focus and arrow ROM:000048F4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000048F4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000048F4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000048F8 jsr set_gCurSubstateZ_to_1:24 ; set gCurSubstateZ = 1 ROM:000048FC mov.b #7, r0l ROM:000048FE bra loc_4974:8 ROM:00004900 ; --------------------------------------------------------------------------- ROM:00004900 ROM:00004900 loc_4900: ; CODE XREF: interactionHandlerDowsing+11Ej ROM:00004900 mov.b r6l, r0l ROM:00004902 extu.w r0 ROM:00004904 shll.w r0 ROM:00004906 shll.w r0 ROM:00004908 add.w #0xCEBC, r0 ROM:0000490C mov.w #2, r1 ROM:00004910 mov.w #gCurSubstateF, e0 ; different per view ROM:00004910 ; battle: ROM:00004910 ; bitfield [3..5]: battle action animation (our action) ROM:00004910 ; 0 - attacked ROM:00004910 ; 1 - evaded ROM:00004910 ; 2 - critical hit ROM:00004910 ; bitfield [1..2]: battle action animation (their action) ROM:00004910 ; 0 - attacked ROM:00004910 ; 1 - evaded ROM:00004910 ; 2 - critical hit ROM:00004914 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00004918 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00004918 ; 0x04 - have walking poke ROM:0000491C bld #2, r0l ROM:0000491E bcc on_special_event_route:8 ROM:00004920 mov.w #0xBE, r0 ; '+' ROM:00004924 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004928 mov.w r0, r6 ROM:0000492A mov.w r0, e0 ROM:0000492C mov.w #0xBE, r1 ; '+' ROM:00004930 mov.w #0x8F00, r0 ROM:00004934 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004938 sub.b r0l, r0l ROM:0000493A push.w r0 ROM:0000493C mov.w #0x88, r0 ; 'ê' ROM:00004940 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004944 mov.w r0, e0 ROM:00004946 mov.w r6, r0 ROM:00004948 mov.w @gCurSubstateF:16, e1 ; different per view ROM:00004948 ; battle: ROM:00004948 ; bitfield [3..5]: battle action animation (our action) ROM:00004948 ; 0 - attacked ROM:00004948 ; 1 - evaded ROM:00004948 ; 2 - critical hit ROM:00004948 ; bitfield [1..2]: battle action animation (their action) ROM:00004948 ; 0 - attacked ROM:00004948 ; 1 - evaded ROM:00004948 ; 2 - critical hit ROM:0000494C mov.w #0xB, r1 ROM:00004950 jsr logEvent:24 ; ( ROM:00004950 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00004950 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00004950 ; r1l = eventTYpe ROM:00004950 ; r1h = boolean isOnSpecialEventRoute ROM:00004950 ; e1 = extraInfo (eg: item type) ROM:00004950 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00004950 ; ) ROM:00004954 adds #2, sp ROM:00004956 bra on_special_event_route:8 ROM:00004958 ; --------------------------------------------------------------------------- ROM:00004958 ROM:00004958 loc_4958: ; CODE XREF: interactionHandlerDowsing+14j ROM:00004958 mov.b #0xE, r0l ROM:0000495A jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000495A ; // 0x02 - enter ROM:0000495A ; // 0x04 - left ROM:0000495A ; // 0x08 - right ROM:0000495E mov.b r0l, r0l ROM:00004960 beq locret_499A:8 ROM:00004962 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00004962 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004966 bne loc_497A:8 ROM:00004968 ROM:00004968 on_special_event_route: ; CODE XREF: interactionHandlerDowsing+114j ROM:00004968 ; interactionHandlerDowsing+150j ... ROM:00004968 sub.b r0l, r0l ROM:0000496A jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000496E jsr someStateVarShuffling:24 ROM:00004972 sub.b r0l, r0l ROM:00004974 ROM:00004974 loc_4974: ; CODE XREF: interactionHandlerDowsing+130j ROM:00004974 jsr setCurrentlyActiveView:24 ROM:00004978 bra locret_499A:8 ROM:0000497A ; --------------------------------------------------------------------------- ROM:0000497A ROM:0000497A loc_497A: ; CODE XREF: interactionHandlerDowsing+198j ROM:0000497A sub.b r0l, r0l ROM:0000497C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00004980 mov.b #4, r0l ROM:00004982 bra loc_4996:8 ROM:00004984 ; --------------------------------------------------------------------------- ROM:00004984 ROM:00004984 loc_4984: ; CODE XREF: interactionHandlerDowsing+1Ej ROM:00004984 mov.b #0xE, r0l ROM:00004986 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00004986 ; // 0x02 - enter ROM:00004986 ; // 0x04 - left ROM:00004986 ; // 0x08 - right ROM:0000498A mov.b r0l, r0l ROM:0000498C beq locret_499A:8 ROM:0000498E sub.b r0l, r0l ROM:00004990 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00004994 sub.b r0l, r0l ROM:00004996 ROM:00004996 loc_4996: ; CODE XREF: interactionHandlerDowsing+1B4j ROM:00004996 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00004996 ; battle: ROM:00004996 ; 0 - battle opening animation ROM:00004996 ; 1 - "XYZ appeared" message ROM:00004996 ; 2 - "attack evade catch" directions shown ROM:00004996 ; 3 - our action taken. details in gCurSubstateF ROM:00004996 ; 4 - poke action taken. details in gCurSubstateF ROM:00004996 ; 5 - "was too strong" ROM:00004996 ; 6 - we lost ROM:00004996 ; 7 - fled ROM:00004996 ; 8 - staredown ROM:00004996 ; 9 - almost had it ROM:00004996 ; 10 - "threw a pokeball" ROM:00004996 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004996 ; 12, 14 - pokeball flying ROM:00004996 ; 13 - pokeball flying ROM:00004996 ; 15 - catch animation plays ROM:00004996 ; 16 - caught! ROM:00004996 ; switcht: ROM:00004996 ; cur slected poke name ROM:0000499A ROM:0000499A locret_499A: ; CODE XREF: interactionHandlerDowsing+1Aj ROM:0000499A ; interactionHandlerDowsing+50j ... ROM:0000499A rts ROM:0000499A ; End of function interactionHandlerDowsing ROM:0000499A ROM:0000499C ROM:0000499C ; =============== S U B R O U T I N E ======================================= ROM:0000499C ROM:0000499C ; (r0 = ramData) ROM:0000499C ROM:0000499C readSpecialItemInfo: ; CODE XREF: maybeFoundSomeEventItem+70p ROM:0000499C mov.w #0xBD40, r3 ROM:000049A0 mov.w r0, e0 ROM:000049A2 mov.w r3, r0 ROM:000049A4 mov.w #0x188, r1 ROM:000049A8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000049AC rts ROM:000049AC ; End of function readSpecialItemInfo ROM:000049AC ROM:000049AE ROM:000049AE ; =============== S U B R O U T I N E ======================================= ROM:000049AE ROM:000049AE ; (r0 = ramData) ROM:000049AE ROM:000049AE writeSpecialItemInfo: ; CODE XREF: maybeFoundSomeEventItem+F2p ROM:000049AE mov.w #0xBD40, r2 ROM:000049B2 mov.w r0, e0 ROM:000049B4 mov.w r2, r0 ROM:000049B6 mov.w #0x188, r1 ROM:000049BA jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:000049BE rts ROM:000049BE ; End of function writeSpecialItemInfo ROM:000049BE ROM:000049C0 ROM:000049C0 ; =============== S U B R O U T I N E ======================================= ROM:000049C0 ROM:000049C0 ROM:000049C0 maybeFoundSomeEventItem: ; CODE XREF: probablyPokeFoundRandomItem+2Ep ROM:000049C0 eventItemInfo = er5 ROM:000049C0 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000049C4 mov.w #0x68, r0 ; 'h' ROM:000049C8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000049CC mov.w r0, r4 ROM:000049CE mov.w #0x188, r0 ROM:000049D2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000049D6 mov.w r0, r6 ROM:000049D8 mov.w #0x7C, r0 ; '|' ROM:000049DC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000049E0 mov.w r0, r5 ROM:000049E2 mov.w r0, e0 ROM:000049E4 mov.w #0x7C, r1 ; '|' ROM:000049E8 mov.w #0xBF00, r0 ROM:000049EC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000049F0 mov.w @(0x4A:16,eventItemInfo), e6 ROM:000049F4 mov.w e6, r0 ROM:000049F6 mov.b r0h, r0l ; byteswap u16 ROM:000049F8 sub.b r0h, r0h ROM:000049FA mov.w e6, r1 ROM:000049FC mov.b r1l, r1h ROM:000049FE sub.b r1l, r1l ROM:00004A00 or.w r1, r0 ROM:00004A02 extu.l er0 ; to u32 ROM:00004A04 mov.l @stepCountTodaySoFar:16, er1 ROM:00004A0A cmp.l er0, er1 ROM:00004A0C bcs not_happening:8 ; mysteryValue >= curStepCount ROM:00004A0E jsr rand:24 ROM:00004A12 shlr.w r0 ; div 8 ROM:00004A14 shlr.w r0 ROM:00004A16 shlr.w r0 ROM:00004A18 extu.w r0 ROM:00004A1A exts.l er0 ROM:00004A1C mov.w #100, r2 ROM:00004A20 divxs.w r2, er0 ; mod 100 ROM:00004A24 mov.b @(0x4C:16,eventItemInfo), r1l ; percent likelyhood the event will happen ROM:00004A28 extu.w r1 ROM:00004A2A cmp.w r1, e0 ROM:00004A2C bge not_happening:8 ROM:00004A2E mov.w r6, r0 ROM:00004A30 jsr readSpecialItemInfo:24 ; (r0 = ramData) ROM:00004A34 mov.w @(6:16,er6), r0 ROM:00004A38 bne not_happening:8 ; we already have a special item held. no more for us ROM:00004A3A mov.b @(0x7B:16,eventItemInfo), r1l ; event number (for this item) ROM:00004A3E mov.w r4, r0 ROM:00004A40 jsr checkForWhetherWeveParticipatedInAGivenEvent:24 ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:00004A40 ; ROM:00004A40 ; always false for index 0 ROM:00004A44 mov.b r0l, r0l ROM:00004A46 beq happening:8 ROM:00004A48 ROM:00004A48 not_happening: ; CODE XREF: maybeFoundSomeEventItem+4Cj ROM:00004A48 ; maybeFoundSomeEventItem+6Cj ... ROM:00004A48 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00004A48 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004A4C shll.b r0l ROM:00004A4E shll.b r0l ROM:00004A50 add.b #2, r0l ROM:00004A52 mov.b r0l, @gCurSubstateD:16 ROM:00004A56 jsr addWatts:24 ; (r0l = watts) ROM:00004A5A jmp locret_4AF0:24 ROM:00004A5E ; --------------------------------------------------------------------------- ROM:00004A5E ROM:00004A5E happening: ; CODE XREF: maybeFoundSomeEventItem+86j ROM:00004A5E mov.w r4, r0 ROM:00004A60 mov.b @(0x7B:16,eventItemInfo), r1l ROM:00004A64 jsr setThatWeveParticipatedInAGivenEvent:24 ; (r0 = tmpSpace[0x68], r1l = evtIdx) ROM:00004A68 mov.w #0xBE, r0 ; '+' ROM:00004A6C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004A70 mov.w r0, r4 ROM:00004A72 mov.w r0, e0 ROM:00004A74 mov.w #0xBE, r1 ; '+' ROM:00004A78 mov.w #0x8F00, r0 ROM:00004A7C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004A80 mov.b #0xA, r0l ROM:00004A82 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00004A82 ; gifted items view: this is item number that has focus and arrow ROM:00004A82 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004A82 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004A82 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004A86 mov.l @eventItemInfo, er0 ; copy 6 bytes from BF00 to BD40 ROM:00004A8A mov.l er0, @er6 ROM:00004A8E mov.w @(4:16,eventItemInfo), r0 ROM:00004A92 mov.w r0, @(4:16,er6) ROM:00004A96 mov.w @(0x48:16,eventItemInfo), r5 ; item to proper place for special item found ROM:00004A9A mov.w r5, @(6:16,er6) ROM:00004A9E mov.w #0xCA3C, r0 ; item name ROM:00004AA2 mov.w #0x180, r1 ROM:00004AA6 mov.w #8, e0 ROM:00004AAA add.w r6, e0 ROM:00004AAC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004AB0 mov.w r6, r0 ROM:00004AB2 jsr writeSpecialItemInfo:24 ; (r0 = ramData) ROM:00004AB6 mov.w #0xB800, r0 ROM:00004ABA jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00004ABE or.b #0x40, r0l ROM:00004AC0 mov.b r0l, r1l ; set 0x40 bit ROM:00004AC2 mov.w #0xB800, r0 ROM:00004AC6 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00004ACA mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00004ACA ; 0x04 - have walking poke ROM:00004ACE bld #2, r0l ROM:00004AD0 bcc locret_4AF0:8 ROM:00004AD2 sub.b r0l, r0l ROM:00004AD4 push.w r0 ROM:00004AD6 mov.w #0x88, r0 ; 'ê' ROM:00004ADA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004ADE mov.w r0, e0 ROM:00004AE0 mov.w @(6:16,er6), e1 ROM:00004AE4 mov.w r4, r0 ROM:00004AE6 mov.w #0x10C, r1 ; special event route ROM:00004AEA jsr logEvent:24 ; ( ROM:00004AEA ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00004AEA ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00004AEA ; r1l = eventTYpe ROM:00004AEA ; r1h = boolean isOnSpecialEventRoute ROM:00004AEA ; e1 = extraInfo (eg: item type) ROM:00004AEA ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00004AEA ; ) ROM:00004AEE adds #2, sp ROM:00004AF0 ROM:00004AF0 locret_4AF0: ; CODE XREF: maybeFoundSomeEventItem+9Aj ROM:00004AF0 ; maybeFoundSomeEventItem+110j ROM:00004AF0 rts ROM:00004AF0 ; End of function maybeFoundSomeEventItem ROM:00004AF0 ROM:00004AF2 ROM:00004AF2 ; =============== S U B R O U T I N E ======================================= ROM:00004AF2 ROM:00004AF2 ROM:00004AF2 probablyPokeFoundRandomItem: ; CODE XREF: interactionHandlerDowsing+CAp ROM:00004AF2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00004AF6 mov.w #0xC, r0 ROM:00004AFA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004AFE mov.w r0, r6 ROM:00004B00 mov.w r0, e0 ROM:00004B02 mov.w #0xCEBC, r0 ROM:00004B06 mov.w #0xC, r1 ROM:00004B0A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004B0E mov.w r6, r0 ROM:00004B10 jsr findFreeItemSlotIdxInStarndardFoundItemsArray:24 ; (r0 = data* /* 4 bytes per item, 2 are item number, 2 unknown*/) -> freeindex or 3 if none ROM:00004B14 mov.b r0l, @gCurSubstateE:16 ; ubstate for various modes ROM:00004B14 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00004B18 mov.b @RamCache_settingsByte:16, r0l ROM:00004B1C bld #0, r0l ROM:00004B1E bcc loc_4B26:8 ROM:00004B20 jsr maybeFoundSomeEventItem:24 ROM:00004B24 bra locret_4B9A:8 ROM:00004B26 ; --------------------------------------------------------------------------- ROM:00004B26 ROM:00004B26 loc_4B26: ; CODE XREF: probablyPokeFoundRandomItem+2Cj ROM:00004B26 mov.w #0xBE, r0 ; '+' ROM:00004B2A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004B2E mov.w r0, r5 ROM:00004B30 mov.w r0, e0 ROM:00004B32 mov.w #0xBE, r1 ; '+' ROM:00004B36 mov.w #0x8F00, r0 ROM:00004B3A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004B3E sub.b r6l, r6l ROM:00004B40 ROM:00004B40 loc_4B40: ; CODE XREF: probablyPokeFoundRandomItem+8Aj ROM:00004B40 mov.b r6l, r0l ROM:00004B42 extu.w r0 ROM:00004B44 mov.w r0, e6 ROM:00004B46 shll.w r0 ROM:00004B48 mov.w #0xA0, r1 ; 'á' ROM:00004B4C jsr checkIfPokeOrItemCanBeEncountered:24 ; (r0 = idx0, r1 = idx1, r5 = ptr) //load LEu16 at ptr[idx0 + idx1], compare with current step counter ROM:00004B50 bcs loc_4B78:8 ROM:00004B52 jsr rand:24 ROM:00004B56 shlr.w r0 ROM:00004B58 shlr.w r0 ROM:00004B5A shlr.w r0 ROM:00004B5C extu.w r0 ROM:00004B5E exts.l er0 ROM:00004B60 mov.w #0x64, r2 ; 'd' ROM:00004B64 divxs.w r2, er0 ROM:00004B68 mov.w #0xB4, r0 ; '¦' ROM:00004B6C add.w r5, r0 ROM:00004B6E add.w e6, r0 ROM:00004B70 mov.b @er0, r1l ROM:00004B72 extu.w r1 ROM:00004B74 cmp.w r1, e0 ROM:00004B76 blt loc_4B7E:8 ROM:00004B78 ROM:00004B78 loc_4B78: ; CODE XREF: probablyPokeFoundRandomItem+5Ej ROM:00004B78 inc.b r6l ROM:00004B7A cmp.b #0xA, r6l ROM:00004B7C bcs loc_4B40:8 ROM:00004B7E ROM:00004B7E loc_4B7E: ; CODE XREF: probablyPokeFoundRandomItem+84j ROM:00004B7E cmp.b #9, r6l ROM:00004B80 bls loc_4B84:8 ROM:00004B82 mov.b #9, r6l ROM:00004B84 ROM:00004B84 loc_4B84: ; CODE XREF: probablyPokeFoundRandomItem+8Ej ROM:00004B84 mov.b r6l, @gCurSubstateY:16 ; Substate: ROM:00004B84 ; gifted items view: this is item number that has focus and arrow ROM:00004B84 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004B84 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004B84 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004B88 mov.b r6l, r0l ROM:00004B8A extu.w r0 ROM:00004B8C shll.w r0 ROM:00004B8E add.w #0x8C, r5 ; 'î' ROM:00004B92 add.w r0, r5 ROM:00004B94 mov.w @er5, r5 ROM:00004B96 mov.w r5, @gCurSubstateF:16 ; different per view ROM:00004B96 ; battle: ROM:00004B96 ; bitfield [3..5]: battle action animation (our action) ROM:00004B96 ; 0 - attacked ROM:00004B96 ; 1 - evaded ROM:00004B96 ; 2 - critical hit ROM:00004B96 ; bitfield [1..2]: battle action animation (their action) ROM:00004B96 ; 0 - attacked ROM:00004B96 ; 1 - evaded ROM:00004B96 ; 2 - critical hit ROM:00004B9A ROM:00004B9A locret_4B9A: ; CODE XREF: probablyPokeFoundRandomItem+32j ROM:00004B9A rts ROM:00004B9A ; End of function probablyPokeFoundRandomItem ROM:00004B9A ROM:00004B9C ROM:00004B9C ; =============== S U B R O U T I N E ======================================= ROM:00004B9C ROM:00004B9C ROM:00004B9C dowsingStartHandleLikely: ; CODE XREF: dowsingDraw+Cp ROM:00004B9C val_0x280 = r4 ROM:00004B9C push.w r5 ROM:00004B9E mov.w #0x280, val_0x280 ROM:00004BA2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00004BA6 mov.w #0x180, r0 ROM:00004BAA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004BAE mov.w r0, r6 ROM:00004BB0 mov.w r0, e0 ROM:00004BB2 mov.b @gCurSubstateB:16, r1l ; Substate: ROM:00004BB2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004BB6 extu.w r1 ROM:00004BB8 mov.w #0x20, e1 ; ' ' ROM:00004BBC mulxu.w e1, er1 ROM:00004BBE mov.w val_0x280, r0 ROM:00004BC0 add.w r1, r0 ROM:00004BC2 mov.w #0x20, r1 ; ' ' ROM:00004BC6 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004BCA mov.w r6, e0 ROM:00004BCC mov.w #0x1008, r1 ROM:00004BD0 mov.w #0x40, r0 ; '@' ROM:00004BD4 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004BD8 mov.w #0x1950, r0 ROM:00004BDC add.w val_0x280, r0 ROM:00004BDE mov.w #0x80, r1 ; 'Ç' ROM:00004BE2 mov.w r6, e0 ROM:00004BE4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004BE8 mov.w r6, e0 ROM:00004BEA mov.w #0x1020, r1 ROM:00004BEE mov.w #0x20, r0 ; ' ' ROM:00004BF2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004BF6 mov.w #0x19D0, r0 ROM:00004BFA add.w val_0x280, r0 ROM:00004BFC mov.w #0x60, r1 ; '`' ROM:00004C00 mov.w r6, e0 ROM:00004C02 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004C06 mov.w r6, e0 ROM:00004C08 mov.w #0x1018, r1 ROM:00004C0C mov.w #0x48, r0 ; 'H' ROM:00004C10 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004C14 mov.b @RamCache_settingsByte:16, r0l ROM:00004C18 bld #0, r0l ROM:00004C1A bcc loc_4C22:8 ROM:00004C1C mov.w #0xC83C, r0 ROM:00004C20 bra loc_4C26:8 ROM:00004C22 ; --------------------------------------------------------------------------- ROM:00004C22 ROM:00004C22 loc_4C22: ; CODE XREF: dowsingStartHandleLikely+7Ej ROM:00004C22 mov.w #0x8FBE, r0 ROM:00004C26 ROM:00004C26 loc_4C26: ; CODE XREF: dowsingStartHandleLikely+84j ROM:00004C26 mov.w r0, e6 ROM:00004C28 mov.w #0xC0, r1 ; '+' ROM:00004C2C mov.w r6, e0 ROM:00004C2E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004C32 mov.w r6, e0 ROM:00004C34 mov.w #0x1820, r1 ROM:00004C38 sub.w r0, r0 ROM:00004C3A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004C3E mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00004C3E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004C3E ; ItemScreenHandler: ROM:00004C3E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004C3E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004C3E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004C3E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004C3E ; 0x0010 - light grey pokeball ROM:00004C3E ; 0x0020 - tiny map icon ROM:00004C3E ; 0x0040 - found item #0 (slot nonempty) ROM:00004C3E ; 0x0080 - found item #1 (slot nonempty) ROM:00004C3E ; 0x0100 - found item #2 (slot nonempty) ROM:00004C3E ; 0x0200 - grey item icon ROM:00004C3E ; ItemRXed - what was RXed ROM:00004C3E ; 0 - event pokemon ROM:00004C3E ; 1 - special route ROM:00004C3E ; 2 - item ROM:00004C3E ; 3 - special ROM:00004C3E ; 4 - stamp: heart ROM:00004C3E ; 5 - stamp: spade ROM:00004C3E ; 6 - stamp: diamond ROM:00004C3E ; 7 - stamp: club ROM:00004C3E ; switch: ROM:00004C3E ; zero - pokemon does ROM:00004C3E ; nonzero - item needs to be switched ROM:00004C3E ; item RXed: ROM:00004C3E ; what sort of thing was RXed: item, map, route, etc ROM:00004C42 beq loc_4C4A:8 ROM:00004C44 dec.b r0l ROM:00004C46 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00004C46 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004C46 ; ItemScreenHandler: ROM:00004C46 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004C46 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004C46 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004C46 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004C46 ; 0x0010 - light grey pokeball ROM:00004C46 ; 0x0020 - tiny map icon ROM:00004C46 ; 0x0040 - found item #0 (slot nonempty) ROM:00004C46 ; 0x0080 - found item #1 (slot nonempty) ROM:00004C46 ; 0x0100 - found item #2 (slot nonempty) ROM:00004C46 ; 0x0200 - grey item icon ROM:00004C46 ; ItemRXed - what was RXed ROM:00004C46 ; 0 - event pokemon ROM:00004C46 ; 1 - special route ROM:00004C46 ; 2 - item ROM:00004C46 ; 3 - special ROM:00004C46 ; 4 - stamp: heart ROM:00004C46 ; 5 - stamp: spade ROM:00004C46 ; 6 - stamp: diamond ROM:00004C46 ; 7 - stamp: club ROM:00004C46 ; switch: ROM:00004C46 ; zero - pokemon does ROM:00004C46 ; nonzero - item needs to be switched ROM:00004C46 ; item RXed: ROM:00004C46 ; what sort of thing was RXed: item, map, route, etc ROM:00004C4A ROM:00004C4A loc_4C4A: ; CODE XREF: dowsingStartHandleLikely+A6j ROM:00004C4A mov.w #0x18D0, r0 ROM:00004C4E add.w val_0x280, r0 ; 0x1B50+0x40 = small bush dark-colored, for dowsing 16x16 ROM:00004C4E ; 0x1B90+0x40 = small bush light-colored, for dowsing 16x16 ROM:00004C50 mov.w #0x80, r1 ; 'Ç' ; read them both ROM:00004C54 mov.w r6, e0 ROM:00004C56 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004C5A sub.w e6, e6 ROM:00004C5C mov.w r6, r3 ROM:00004C5E add.w #0x40, r3 ; '@' ROM:00004C62 ROM:00004C62 loc_4C62: ; CODE XREF: dowsingStartHandleLikely+FEj ROM:00004C62 mov.w e6, r5 ROM:00004C64 mov.b #0x10, r5h ROM:00004C66 mulxu.b r5h, r5 ROM:00004C68 mov.b @gCurSubstateC:16, r0l ROM:00004C6C extu.w r0 ROM:00004C6E cmp.w r0, e6 ROM:00004C70 bne loc_4C7C:8 ROM:00004C72 mov.b r5l, r0l ROM:00004C74 mov.w r3, e0 ROM:00004C76 mov.w #0x1010, r1 ROM:00004C7A bra loc_4C8E:8 ROM:00004C7C ; --------------------------------------------------------------------------- ROM:00004C7C ROM:00004C7C loc_4C7C: ; CODE XREF: dowsingStartHandleLikely+D4j ROM:00004C7C mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004C7C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004C7C ; ItemScreenHandler: ROM:00004C7C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004C7C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004C7C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004C7C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004C7C ; 0x0010 - light grey pokeball ROM:00004C7C ; 0x0020 - tiny map icon ROM:00004C7C ; 0x0040 - found item #0 (slot nonempty) ROM:00004C7C ; 0x0080 - found item #1 (slot nonempty) ROM:00004C7C ; 0x0100 - found item #2 (slot nonempty) ROM:00004C7C ; 0x0200 - grey item icon ROM:00004C7C ; ItemRXed - what was RXed ROM:00004C7C ; 0 - event pokemon ROM:00004C7C ; 1 - special route ROM:00004C7C ; 2 - item ROM:00004C7C ; 3 - special ROM:00004C7C ; 4 - stamp: heart ROM:00004C7C ; 5 - stamp: spade ROM:00004C7C ; 6 - stamp: diamond ROM:00004C7C ; 7 - stamp: club ROM:00004C7C ; switch: ROM:00004C7C ; zero - pokemon does ROM:00004C7C ; nonzero - item needs to be switched ROM:00004C7C ; item RXed: ROM:00004C7C ; what sort of thing was RXed: item, map, route, etc ROM:00004C80 extu.w r0 ROM:00004C82 cmp.w r0, e6 ROM:00004C84 beq loc_4C94:8 ROM:00004C86 mov.b r5l, r0l ROM:00004C88 mov.w r6, e0 ROM:00004C8A mov.b #0x10, r1h ROM:00004C8C mov.b r1h, r1l ROM:00004C8E ROM:00004C8E loc_4C8E: ; CODE XREF: dowsingStartHandleLikely+DEj ROM:00004C8E mov.b #0x18, r0h ROM:00004C90 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004C94 ROM:00004C94 loc_4C94: ; CODE XREF: dowsingStartHandleLikely+E8j ROM:00004C94 inc.w #1, e6 ROM:00004C96 cmp.w #6, e6 ROM:00004C9A blt loc_4C62:8 ROM:00004C9C mov.b @curUiFlags:16, r1l ; bits: ROM:00004C9C ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00004C9C ; 0x02 - slower animation frame ROM:00004CA0 and.b #3, r1l ROM:00004CA2 extu.w r1 ROM:00004CA4 mov.b @(unk_BD82,er1), r1l ; 0xbd82 ROM:00004CA8 mov.w r6, e0 ROM:00004CAA mov.w #0x1010, r0 ROM:00004CAE jsr moveImageVerticaly:24 ; (r0l = imgWidth, r0h = imgHeight, e0 = imageDataInRam, r1l = "by") //negative is up ROM:00004CB2 mov.w r6, e0 ROM:00004CB4 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004CB4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004CB4 ; ItemScreenHandler: ROM:00004CB4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004CB4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004CB4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004CB4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004CB4 ; 0x0010 - light grey pokeball ROM:00004CB4 ; 0x0020 - tiny map icon ROM:00004CB4 ; 0x0040 - found item #0 (slot nonempty) ROM:00004CB4 ; 0x0080 - found item #1 (slot nonempty) ROM:00004CB4 ; 0x0100 - found item #2 (slot nonempty) ROM:00004CB4 ; 0x0200 - grey item icon ROM:00004CB4 ; ItemRXed - what was RXed ROM:00004CB4 ; 0 - event pokemon ROM:00004CB4 ; 1 - special route ROM:00004CB4 ; 2 - item ROM:00004CB4 ; 3 - special ROM:00004CB4 ; 4 - stamp: heart ROM:00004CB4 ; 5 - stamp: spade ROM:00004CB4 ; 6 - stamp: diamond ROM:00004CB4 ; 7 - stamp: club ROM:00004CB4 ; switch: ROM:00004CB4 ; zero - pokemon does ROM:00004CB4 ; nonzero - item needs to be switched ROM:00004CB4 ; item RXed: ROM:00004CB4 ; what sort of thing was RXed: item, map, route, etc ROM:00004CB8 mov.b #0x10, r0h ROM:00004CBA mulxu.b r0h, r0 ROM:00004CBC mov.w #0x1010, r1 ROM:00004CC0 mov.b #0x18, r0h ROM:00004CC2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004CC6 mov.w #0xF, r1 ROM:00004CCA mov.w #0x1730, r0 ; "Discover an item!" ROM:00004CCE jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00004CCE ; ROM:00004CCE ; //always drawn at x = 0 ROM:00004CCE ; ROM:00004CD2 pop.w r5 ROM:00004CD4 rts ROM:00004CD4 ; End of function dowsingStartHandleLikely ROM:00004CD4 ROM:00004CD6 ROM:00004CD6 ; =============== S U B R O U T I N E ======================================= ROM:00004CD6 ROM:00004CD6 ROM:00004CD6 dowsingDraw: ; CODE XREF: maybe_viewDoDisplay:case__0x02p ROM:00004CD6 mov.w #0x280, r5 ROM:00004CDA mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004CDA ; battle: ROM:00004CDA ; 0 - battle opening animation ROM:00004CDA ; 1 - "XYZ appeared" message ROM:00004CDA ; 2 - "attack evade catch" directions shown ROM:00004CDA ; 3 - our action taken. details in gCurSubstateF ROM:00004CDA ; 4 - poke action taken. details in gCurSubstateF ROM:00004CDA ; 5 - "was too strong" ROM:00004CDA ; 6 - we lost ROM:00004CDA ; 7 - fled ROM:00004CDA ; 8 - staredown ROM:00004CDA ; 9 - almost had it ROM:00004CDA ; 10 - "threw a pokeball" ROM:00004CDA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004CDA ; 12, 14 - pokeball flying ROM:00004CDA ; 13 - pokeball flying ROM:00004CDA ; 15 - catch animation plays ROM:00004CDA ; 16 - caught! ROM:00004CDA ; switcht: ROM:00004CDA ; cur slected poke name ROM:00004CDE cmp.b #1, r0l ROM:00004CE0 bne loc_4CEA:8 ROM:00004CE2 jsr dowsingStartHandleLikely:24 ROM:00004CE6 jmp loc_4F48:24 ROM:00004CEA ; --------------------------------------------------------------------------- ROM:00004CEA ROM:00004CEA loc_4CEA: ; CODE XREF: dowsingDraw+Aj ROM:00004CEA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00004CEE mov.w #0x140, r0 ROM:00004CF2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004CF6 mov.w r0, r4 ROM:00004CF8 mov.w #0x180, r0 ROM:00004CFC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00004D00 mov.w r0, r6 ROM:00004D02 mov.w r5, r3 ROM:00004D04 mov.w r3, r0 ROM:00004D06 mov.w #0x140, r1 ROM:00004D0A mov.w r4, e0 ROM:00004D0C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004D10 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00004D10 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004D14 extu.w r0 ROM:00004D16 mov.w #0x20, e0 ; ' ' ROM:00004D1A mulxu.w e0, er0 ROM:00004D1C add.w r0, r4 ROM:00004D1E mov.w r4, e0 ROM:00004D20 mov.w #0x1008, r1 ROM:00004D24 mov.w #0x40, r0 ; '@' ROM:00004D28 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004D2C mov.w #0x1950, r4 ROM:00004D30 add.w r5, r4 ROM:00004D32 mov.w r4, r0 ROM:00004D34 mov.w #0x80, r1 ; 'Ç' ROM:00004D38 mov.w r6, e0 ROM:00004D3A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004D3E mov.w r6, e0 ROM:00004D40 mov.w #0x1020, r1 ROM:00004D44 mov.w #0x20, r0 ; ' ' ROM:00004D48 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004D4C mov.w #0x19D0, r4 ROM:00004D50 add.w r5, r4 ROM:00004D52 mov.w r4, r0 ROM:00004D54 mov.w #0x60, r1 ; '`' ROM:00004D58 mov.w r6, e0 ROM:00004D5A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004D5E mov.w r6, e0 ROM:00004D60 mov.w #0x1018, r1 ROM:00004D64 mov.w #0x48, r0 ; 'H' ROM:00004D68 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004D6C mov.b @RamCache_settingsByte:16, r0l ROM:00004D70 bld #0, r0l ROM:00004D72 bcc loc_4D7A:8 ROM:00004D74 mov.w #0xC83C, r4 ROM:00004D78 bra loc_4D7E:8 ROM:00004D7A ; --------------------------------------------------------------------------- ROM:00004D7A ROM:00004D7A loc_4D7A: ; CODE XREF: dowsingDraw+9Cj ROM:00004D7A mov.w #0x8FBE, r4 ROM:00004D7E ROM:00004D7E loc_4D7E: ; CODE XREF: dowsingDraw+A2j ROM:00004D7E mov.w r4, r0 ROM:00004D80 mov.w #0xC0, r1 ; '+' ROM:00004D84 mov.w r6, e0 ROM:00004D86 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004D8A mov.w r6, e0 ROM:00004D8C mov.w #0x1820, r1 ROM:00004D90 sub.w r0, r0 ROM:00004D92 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004D96 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00004D96 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004D96 ; ItemScreenHandler: ROM:00004D96 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004D96 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004D96 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004D96 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004D96 ; 0x0010 - light grey pokeball ROM:00004D96 ; 0x0020 - tiny map icon ROM:00004D96 ; 0x0040 - found item #0 (slot nonempty) ROM:00004D96 ; 0x0080 - found item #1 (slot nonempty) ROM:00004D96 ; 0x0100 - found item #2 (slot nonempty) ROM:00004D96 ; 0x0200 - grey item icon ROM:00004D96 ; ItemRXed - what was RXed ROM:00004D96 ; 0 - event pokemon ROM:00004D96 ; 1 - special route ROM:00004D96 ; 2 - item ROM:00004D96 ; 3 - special ROM:00004D96 ; 4 - stamp: heart ROM:00004D96 ; 5 - stamp: spade ROM:00004D96 ; 6 - stamp: diamond ROM:00004D96 ; 7 - stamp: club ROM:00004D96 ; switch: ROM:00004D96 ; zero - pokemon does ROM:00004D96 ; nonzero - item needs to be switched ROM:00004D96 ; item RXed: ROM:00004D96 ; what sort of thing was RXed: item, map, route, etc ROM:00004D9A beq loc_4DA2:8 ROM:00004D9C dec.b r0l ROM:00004D9E mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00004D9E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004D9E ; ItemScreenHandler: ROM:00004D9E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004D9E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004D9E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004D9E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004D9E ; 0x0010 - light grey pokeball ROM:00004D9E ; 0x0020 - tiny map icon ROM:00004D9E ; 0x0040 - found item #0 (slot nonempty) ROM:00004D9E ; 0x0080 - found item #1 (slot nonempty) ROM:00004D9E ; 0x0100 - found item #2 (slot nonempty) ROM:00004D9E ; 0x0200 - grey item icon ROM:00004D9E ; ItemRXed - what was RXed ROM:00004D9E ; 0 - event pokemon ROM:00004D9E ; 1 - special route ROM:00004D9E ; 2 - item ROM:00004D9E ; 3 - special ROM:00004D9E ; 4 - stamp: heart ROM:00004D9E ; 5 - stamp: spade ROM:00004D9E ; 6 - stamp: diamond ROM:00004D9E ; 7 - stamp: club ROM:00004D9E ; switch: ROM:00004D9E ; zero - pokemon does ROM:00004D9E ; nonzero - item needs to be switched ROM:00004D9E ; item RXed: ROM:00004D9E ; what sort of thing was RXed: item, map, route, etc ROM:00004DA2 ROM:00004DA2 loc_4DA2: ; CODE XREF: dowsingDraw+C4j ROM:00004DA2 mov.w #0x18D0, r4 ROM:00004DA6 add.w r5, r4 ROM:00004DA8 mov.w r4, r0 ROM:00004DAA mov.w #0x80, r1 ; 'Ç' ROM:00004DAE mov.w r6, e0 ROM:00004DB0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004DB4 sub.w e6, e6 ROM:00004DB6 mov.w r6, r3 ROM:00004DB8 add.w #0x40, r3 ; '@' ROM:00004DBC ROM:00004DBC loc_4DBC: ; CODE XREF: dowsingDraw+128j ROM:00004DBC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004DBC ; battle: ROM:00004DBC ; 0 - battle opening animation ROM:00004DBC ; 1 - "XYZ appeared" message ROM:00004DBC ; 2 - "attack evade catch" directions shown ROM:00004DBC ; 3 - our action taken. details in gCurSubstateF ROM:00004DBC ; 4 - poke action taken. details in gCurSubstateF ROM:00004DBC ; 5 - "was too strong" ROM:00004DBC ; 6 - we lost ROM:00004DBC ; 7 - fled ROM:00004DBC ; 8 - staredown ROM:00004DBC ; 9 - almost had it ROM:00004DBC ; 10 - "threw a pokeball" ROM:00004DBC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004DBC ; 12, 14 - pokeball flying ROM:00004DBC ; 13 - pokeball flying ROM:00004DBC ; 15 - catch animation plays ROM:00004DBC ; 16 - caught! ROM:00004DBC ; switcht: ROM:00004DBC ; cur slected poke name ROM:00004DC0 cmp.b #2, r0l ROM:00004DC2 bne loc_4DCE:8 ROM:00004DC4 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004DC4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004DC4 ; ItemScreenHandler: ROM:00004DC4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004DC4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004DC4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004DC4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004DC4 ; 0x0010 - light grey pokeball ROM:00004DC4 ; 0x0020 - tiny map icon ROM:00004DC4 ; 0x0040 - found item #0 (slot nonempty) ROM:00004DC4 ; 0x0080 - found item #1 (slot nonempty) ROM:00004DC4 ; 0x0100 - found item #2 (slot nonempty) ROM:00004DC4 ; 0x0200 - grey item icon ROM:00004DC4 ; ItemRXed - what was RXed ROM:00004DC4 ; 0 - event pokemon ROM:00004DC4 ; 1 - special route ROM:00004DC4 ; 2 - item ROM:00004DC4 ; 3 - special ROM:00004DC4 ; 4 - stamp: heart ROM:00004DC4 ; 5 - stamp: spade ROM:00004DC4 ; 6 - stamp: diamond ROM:00004DC4 ; 7 - stamp: club ROM:00004DC4 ; switch: ROM:00004DC4 ; zero - pokemon does ROM:00004DC4 ; nonzero - item needs to be switched ROM:00004DC4 ; item RXed: ROM:00004DC4 ; what sort of thing was RXed: item, map, route, etc ROM:00004DC8 extu.w r0 ROM:00004DCA cmp.w r0, e6 ROM:00004DCC beq loc_4DF8:8 ROM:00004DCE ROM:00004DCE loc_4DCE: ; CODE XREF: dowsingDraw+ECj ROM:00004DCE mov.w e6, r0 ROM:00004DD0 mov.b #0x10, r0h ROM:00004DD2 mulxu.b r0h, r0 ROM:00004DD4 mov.b r0l, r4l ROM:00004DD6 mov.b @gCurSubstateC:16, r0l ROM:00004DDA extu.w r0 ROM:00004DDC cmp.w r0, e6 ROM:00004DDE bne loc_4DEA:8 ROM:00004DE0 mov.b r4l, r0l ROM:00004DE2 mov.w r3, e0 ROM:00004DE4 mov.w #0x1010, r1 ROM:00004DE8 bra loc_4DF2:8 ROM:00004DEA ; --------------------------------------------------------------------------- ROM:00004DEA ROM:00004DEA loc_4DEA: ; CODE XREF: dowsingDraw+108j ROM:00004DEA mov.b r4l, r0l ROM:00004DEC mov.w r6, e0 ROM:00004DEE mov.b #0x10, r1h ROM:00004DF0 mov.b r1h, r1l ROM:00004DF2 ROM:00004DF2 loc_4DF2: ; CODE XREF: dowsingDraw+112j ROM:00004DF2 mov.b #0x18, r0h ROM:00004DF4 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004DF8 ROM:00004DF8 loc_4DF8: ; CODE XREF: dowsingDraw+F6j ROM:00004DF8 inc.w #1, e6 ROM:00004DFA cmp.w #6, e6 ROM:00004DFE blt loc_4DBC:8 ROM:00004E00 mov.w #0x10, e6 ROM:00004E04 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00004E04 ; battle: ROM:00004E04 ; 0 - battle opening animation ROM:00004E04 ; 1 - "XYZ appeared" message ROM:00004E04 ; 2 - "attack evade catch" directions shown ROM:00004E04 ; 3 - our action taken. details in gCurSubstateF ROM:00004E04 ; 4 - poke action taken. details in gCurSubstateF ROM:00004E04 ; 5 - "was too strong" ROM:00004E04 ; 6 - we lost ROM:00004E04 ; 7 - fled ROM:00004E04 ; 8 - staredown ROM:00004E04 ; 9 - almost had it ROM:00004E04 ; 10 - "threw a pokeball" ROM:00004E04 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00004E04 ; 12, 14 - pokeball flying ROM:00004E04 ; 13 - pokeball flying ROM:00004E04 ; 15 - catch animation plays ROM:00004E04 ; 16 - caught! ROM:00004E04 ; switcht: ROM:00004E04 ; cur slected poke name ROM:00004E08 beq loc_4E1E:8 ROM:00004E0A cmp.b #2, r0l ROM:00004E0C beq loc_4E5E:8 ROM:00004E0E cmp.b #3, r0l ROM:00004E10 beq loc_4ECE:16 ROM:00004E14 cmp.b #4, r0l ROM:00004E16 bne loc_4F48:16 ROM:00004E1A jmp loc_4F10:24 ROM:00004E1E ; --------------------------------------------------------------------------- ROM:00004E1E ROM:00004E1E loc_4E1E: ; CODE XREF: dowsingDraw+132j ROM:00004E1E mov.b @curUiFlags:16, r4l ; bits: ROM:00004E1E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00004E1E ; 0x02 - slower animation frame ROM:00004E22 and.b #1, r4l ROM:00004E24 extu.w r4 ROM:00004E26 mov.w e6, e4 ROM:00004E28 mulxu.w e4, er4 ROM:00004E2A mov.w #0x278, r0 ROM:00004E2E add.w r5, r0 ROM:00004E30 add.w r0, r4 ROM:00004E32 mov.w e6, r1 ROM:00004E34 mov.w r4, r0 ROM:00004E36 mov.w r6, e0 ROM:00004E38 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004E3C mov.w r6, e0 ROM:00004E3E mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004E3E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004E3E ; ItemScreenHandler: ROM:00004E3E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004E3E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004E3E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004E3E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004E3E ; 0x0010 - light grey pokeball ROM:00004E3E ; 0x0020 - tiny map icon ROM:00004E3E ; 0x0040 - found item #0 (slot nonempty) ROM:00004E3E ; 0x0080 - found item #1 (slot nonempty) ROM:00004E3E ; 0x0100 - found item #2 (slot nonempty) ROM:00004E3E ; 0x0200 - grey item icon ROM:00004E3E ; ItemRXed - what was RXed ROM:00004E3E ; 0 - event pokemon ROM:00004E3E ; 1 - special route ROM:00004E3E ; 2 - item ROM:00004E3E ; 3 - special ROM:00004E3E ; 4 - stamp: heart ROM:00004E3E ; 5 - stamp: spade ROM:00004E3E ; 6 - stamp: diamond ROM:00004E3E ; 7 - stamp: club ROM:00004E3E ; switch: ROM:00004E3E ; zero - pokemon does ROM:00004E3E ; nonzero - item needs to be switched ROM:00004E3E ; item RXed: ROM:00004E3E ; what sort of thing was RXed: item, map, route, etc ROM:00004E42 mov.b #0x10, r0h ROM:00004E44 mulxu.b r0h, r0 ROM:00004E46 add.b #4, r0l ROM:00004E48 mov.w #0x808, r1 ROM:00004E4C mov.b #0x28, r0h ; '(' ROM:00004E4E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004E52 mov.w #0xF, r1 ROM:00004E56 mov.w #0x1730, r0 ; "Discover an item!" ROM:00004E5A jmp draw_dowsing_reply_msg:24 ROM:00004E5E ; --------------------------------------------------------------------------- ROM:00004E5E ROM:00004E5E loc_4E5E: ; CODE XREF: dowsingDraw+136j ROM:00004E5E mov.w #0x208, r4 ROM:00004E62 add.w r5, r4 ROM:00004E64 mov.w e6, r1 ROM:00004E66 mov.w r4, r0 ROM:00004E68 mov.w r6, e0 ROM:00004E6A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004E6E mov.w r6, e0 ROM:00004E70 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004E70 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004E70 ; ItemScreenHandler: ROM:00004E70 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004E70 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004E70 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004E70 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004E70 ; 0x0010 - light grey pokeball ROM:00004E70 ; 0x0020 - tiny map icon ROM:00004E70 ; 0x0040 - found item #0 (slot nonempty) ROM:00004E70 ; 0x0080 - found item #1 (slot nonempty) ROM:00004E70 ; 0x0100 - found item #2 (slot nonempty) ROM:00004E70 ; 0x0200 - grey item icon ROM:00004E70 ; ItemRXed - what was RXed ROM:00004E70 ; 0 - event pokemon ROM:00004E70 ; 1 - special route ROM:00004E70 ; 2 - item ROM:00004E70 ; 3 - special ROM:00004E70 ; 4 - stamp: heart ROM:00004E70 ; 5 - stamp: spade ROM:00004E70 ; 6 - stamp: diamond ROM:00004E70 ; 7 - stamp: club ROM:00004E70 ; switch: ROM:00004E70 ; zero - pokemon does ROM:00004E70 ; nonzero - item needs to be switched ROM:00004E70 ; item RXed: ROM:00004E70 ; what sort of thing was RXed: item, map, route, etc ROM:00004E74 mov.b #0x10, r0h ROM:00004E76 mulxu.b r0h, r0 ROM:00004E78 add.b #4, r0l ROM:00004E7A mov.w #0x808, r1 ROM:00004E7E mov.b #0x18, r0h ROM:00004E80 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004E84 mov.b @gCurSubstateD:16, r0l ROM:00004E88 beq loc_4EA4:8 ROM:00004E8A extu.w r0 ROM:00004E8C mov.w r0, e0 ROM:00004E8E mov.b #0xD, r1l ROM:00004E90 mov.w #0x2002, r0 ROM:00004E94 jsr drawNumberAndWattsymbolOnscreen:24 ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:00004E98 mov.w #0x10E, r1 ; XXX? ROM:00004E9C mov.w #0xF30, r0 ; "received!" ROM:00004EA0 jmp draw_dowsing_reply_msg:24 ROM:00004EA4 ; --------------------------------------------------------------------------- ROM:00004EA4 ROM:00004EA4 loc_4EA4: ; CODE XREF: dowsingDraw+1B2j ROM:00004EA4 mov.b @gCurSubstateY:16, r6l ; Substate: ROM:00004EA4 ; gifted items view: this is item number that has focus and arrow ROM:00004EA4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00004EA4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00004EA4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00004EA8 cmp.b #0xA, r6l ROM:00004EAA bcs loc_4EB8:8 ROM:00004EAC mov.b #0xD, r1l ROM:00004EAE mov.w #0x2000, r0 ROM:00004EB2 jsr showRxedItemName:24 ; (r0l = imgWidth, r0h = imgHeight, r1l = flagsBits) ROM:00004EB6 bra loc_4EC4:8 ROM:00004EB8 ; --------------------------------------------------------------------------- ROM:00004EB8 ROM:00004EB8 loc_4EB8: ; CODE XREF: dowsingDraw+1D4j ROM:00004EB8 mov.b r6l, r1l ROM:00004EBA mov.b #0xD, r1h ROM:00004EBC mov.w #0x2000, r0 ROM:00004EC0 jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00004EC4 ROM:00004EC4 loc_4EC4: ; CODE XREF: dowsingDraw+1E0j ROM:00004EC4 mov.w #0x10E, r1 ROM:00004EC8 mov.w #0x1830, r0 ; "found!" ROM:00004ECC bra draw_dowsing_reply_msg:8 ROM:00004ECE ; --------------------------------------------------------------------------- ROM:00004ECE ROM:00004ECE loc_4ECE: ; CODE XREF: dowsingDraw+13Aj ROM:00004ECE mov.w #0x10F, r1 ROM:00004ED2 mov.w #0x1930, r0 ; "Nothing found!" ROM:00004ED6 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00004ED6 ; ROM:00004ED6 ; //always drawn at x = 0 ROM:00004ED6 ; ROM:00004EDA mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00004EDA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004EDE bne loc_4F48:8 ROM:00004EE0 mov.w #0x208, r4 ROM:00004EE4 add.w r5, r4 ROM:00004EE6 mov.w e6, r1 ROM:00004EE8 mov.w r4, r0 ROM:00004EEA mov.w r6, e0 ROM:00004EEC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00004EF0 mov.w #3, e6 ROM:00004EF4 ROM:00004EF4 loc_4EF4: ; CODE XREF: dowsingDraw+238j ROM:00004EF4 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00004EF4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004EF8 mov.b #0x10, r0h ROM:00004EFA mulxu.b r0h, r0 ROM:00004EFC add.b #4, r0l ROM:00004EFE mov.w r6, e0 ROM:00004F00 mov.w #0x808, r1 ROM:00004F04 mov.b #0x16, r0h ROM:00004F06 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00004F0A dec.w #1, e6 ROM:00004F0C beq loc_4F48:8 ROM:00004F0E bra loc_4EF4:8 ROM:00004F10 ; --------------------------------------------------------------------------- ROM:00004F10 ROM:00004F10 loc_4F10: ; CODE XREF: dowsingDraw+144j ROM:00004F10 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00004F10 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00004F10 ; ItemScreenHandler: ROM:00004F10 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00004F10 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00004F10 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00004F10 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00004F10 ; 0x0010 - light grey pokeball ROM:00004F10 ; 0x0020 - tiny map icon ROM:00004F10 ; 0x0040 - found item #0 (slot nonempty) ROM:00004F10 ; 0x0080 - found item #1 (slot nonempty) ROM:00004F10 ; 0x0100 - found item #2 (slot nonempty) ROM:00004F10 ; 0x0200 - grey item icon ROM:00004F10 ; ItemRXed - what was RXed ROM:00004F10 ; 0 - event pokemon ROM:00004F10 ; 1 - special route ROM:00004F10 ; 2 - item ROM:00004F10 ; 3 - special ROM:00004F10 ; 4 - stamp: heart ROM:00004F10 ; 5 - stamp: spade ROM:00004F10 ; 6 - stamp: diamond ROM:00004F10 ; 7 - stamp: club ROM:00004F10 ; switch: ROM:00004F10 ; zero - pokemon does ROM:00004F10 ; nonzero - item needs to be switched ROM:00004F10 ; item RXed: ROM:00004F10 ; what sort of thing was RXed: item, map, route, etc ROM:00004F14 extu.w r0 ROM:00004F16 mov.w r0, r1 ROM:00004F18 mov.b @gCurSubstateB+1:16, r6l ; Substate: ROM:00004F18 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00004F1C extu.w r6 ROM:00004F1E mov.w r6, e6 ROM:00004F20 sub.w e6, r0 ROM:00004F22 mov.w r0, r6 ROM:00004F24 bge loc_4F2C:8 ROM:00004F26 mov.w r1, r0 ROM:00004F28 neg.w r0 ROM:00004F2A add.w e6, r0 ROM:00004F2C ROM:00004F2C loc_4F2C: ; CODE XREF: dowsingDraw+24Ej ROM:00004F2C cmp.w #2, r0 ROM:00004F30 bge loc_4F3C:8 ROM:00004F32 mov.w #0x10F, r1 ROM:00004F36 mov.w #0x1A30, r0 ; "It's near!" ROM:00004F3A bra draw_dowsing_reply_msg:8 ROM:00004F3C ; --------------------------------------------------------------------------- ROM:00004F3C ROM:00004F3C loc_4F3C: ; CODE XREF: dowsingDraw+25Aj ROM:00004F3C mov.w #0x10F, r1 ROM:00004F40 mov.w #0x1B30, r0 ; "It's far away..." ROM:00004F44 ROM:00004F44 draw_dowsing_reply_msg: ; CODE XREF: dowsingDraw+184j ROM:00004F44 ; dowsingDraw+1CAj ... ROM:00004F44 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00004F44 ; ROM:00004F44 ; //always drawn at x = 0 ROM:00004F44 ; ROM:00004F48 ROM:00004F48 loc_4F48: ; CODE XREF: dowsingDraw+10j ROM:00004F48 ; dowsingDraw+140j ... ROM:00004F48 sub.w r0, r0 ROM:00004F4A jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00004F4E rts ROM:00004F4E ; End of function dowsingDraw ROM:00004F4E ROM:00004F50 ROM:00004F50 ; =============== S U B R O U T I N E ======================================= ROM:00004F50 ROM:00004F50 ; (r0 = idx0, r1 = idx1, r5 = ptr) //load LEu16 at ptr[idx0 + idx1], compare with current step counter ROM:00004F50 ROM:00004F50 checkIfPokeOrItemCanBeEncountered: ; CODE XREF: probablyPokeFoundRandomItem+5Ap ROM:00004F50 ; pickPokemonToEncounter+F6p ROM:00004F50 add.w r5, r1 ROM:00004F52 add.w r0, r1 ROM:00004F54 mov.w @er1, e5 ; load le u16 ROM:00004F56 mov.w e5, r0 ROM:00004F58 mov.b r0h, r0l ROM:00004F5A sub.b r0h, r0h ROM:00004F5C mov.w e5, r1 ROM:00004F5E mov.b r1l, r1h ROM:00004F60 sub.b r1l, r1l ROM:00004F62 or.w r1, r0 ROM:00004F64 extu.l er0 ROM:00004F66 mov.l @stepCountTodaySoFar:16, er1 ROM:00004F6C cmp.l er0, er1 ROM:00004F6E rts ROM:00004F6E ; End of function checkIfPokeOrItemCanBeEncountered ROM:00004F6E ROM:00004F70 ROM:00004F70 ; =============== S U B R O U T I N E ======================================= ROM:00004F70 ROM:00004F70 ROM:00004F70 ssuConfigure: ; CODE XREF: eepromWriteSingleByte+22p ROM:00004F70 ; eepromWriteData+22p ... ROM:00004F70 bset #4, @CKSTPR2:8 ; clock up sSU ROM:00004F74 sub.b r0l, r0l ROM:00004F76 mov.b r0l, @SSU_SSER:16 ; ssu off ROM:00004F7A mov.b @common_bit_flags:16, r0l ROM:00004F7E bld #4, r0l ROM:00004F80 bcc loc_4F8A:8 ROM:00004F82 mov.b #0x86, r0l ; 'å' ROM:00004F84 mov.b r0l, @SSU_SSMR:16 ROM:00004F88 bra locret_4F90:8 ROM:00004F8A ; --------------------------------------------------------------------------- ROM:00004F8A ROM:00004F8A loc_4F8A: ; CODE XREF: ssuConfigure+10j ROM:00004F8A mov.b #0x87, r0l ; 'ç' ROM:00004F8C mov.b r0l, @SSU_SSMR:16 ROM:00004F90 ROM:00004F90 locret_4F90: ; CODE XREF: ssuConfigure+18j ROM:00004F90 rts ROM:00004F90 ; End of function ssuConfigure ROM:00004F90 ROM:00004F92 ROM:00004F92 ; =============== S U B R O U T I N E ======================================= ROM:00004F92 ROM:00004F92 ROM:00004F92 ssu_Rx_Off: ; CODE XREF: eepromWriteSingleByte+F6p ROM:00004F92 ; eepromWriteData+11Ep ... ROM:00004F92 mov.b #0x80, r0l ; 'Ç' ROM:00004F94 mov.b r0l, @SSU_SSER:16 ROM:00004F98 mov.b #0x86, r0l ; 'å' ROM:00004F9A mov.b r0l, @SSU_SSMR:16 ROM:00004F9E rts ROM:00004F9E ; End of function ssu_Rx_Off ROM:00004F9E ROM:00004FA0 ROM:00004FA0 ; =============== S U B R O U T I N E ======================================= ROM:00004FA0 ROM:00004FA0 ; -> r0= byte ROM:00004FA0 ROM:00004FA0 ssu_WaitForRx: ; CODE XREF: ssu_WaitForRx+20j ROM:00004FA0 ; eepromWriteSingleByte+50p ... ROM:00004FA0 mov.b @SSU_SSSR:16, r0l ROM:00004FA4 bld #6, r0l ROM:00004FA6 bcc not_overrun:8 ROM:00004FA8 mov.w #SSU_SSSR, r0 ROM:00004FAC bclr #6, @er0 ROM:00004FB0 mov.w #common_bit_flags, r0 ROM:00004FB4 bset #6, @er0 ROM:00004FB8 bra loc_4FC2:8 ROM:00004FBA ; --------------------------------------------------------------------------- ROM:00004FBA ROM:00004FBA not_overrun: ; CODE XREF: ssu_WaitForRx+6j ROM:00004FBA mov.b @SSU_SSSR:16, r0l ROM:00004FBE bld #1, r0l ROM:00004FC0 bcc ssu_WaitForRx:8 ; -> r0= byte ROM:00004FC2 ROM:00004FC2 loc_4FC2: ; CODE XREF: ssu_WaitForRx+18j ROM:00004FC2 mov.b @SSU_SSRDR:16, r0h ROM:00004FC6 mov.b r0h, r0l ROM:00004FC8 rts ROM:00004FC8 ; End of function ssu_WaitForRx ROM:00004FC8 ROM:00004FCA ROM:00004FCA ; =============== S U B R O U T I N E ======================================= ROM:00004FCA ROM:00004FCA ; (r0 = eepromAddr, r1l = byte) ROM:00004FCA ROM:00004FCA eepromWriteSingleByte: ; CODE XREF: ENTRY+2Ap ROM:00004FCA ; startWalkEepromActions+56p ... ROM:00004FCA ROM:00004FCA ; FUNCTION CHUNK AT ROM:0000BA62 SIZE 00000016 BYTES ROM:00004FCA ROM:00004FCA jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00004FCE mov.w r0, e6 ROM:00004FD0 mov.b r1l, r5h ROM:00004FD2 mov.b #3, r5l ROM:00004FD4 mov.w #common_bit_flags, r2 ROM:00004FD8 bclr #6, @er2 ROM:00004FDC mov.w e6, r2 ROM:00004FDE mov.b r2h, r2l ROM:00004FE0 sub.b r2h, r2h ROM:00004FE2 mov.b r2l, r6h ROM:00004FE4 jmp loc_50CE:24 ROM:00004FE8 ; --------------------------------------------------------------------------- ROM:00004FE8 ROM:00004FE8 loc_4FE8: ; CODE XREF: eepromWriteSingleByte+106j ROM:00004FE8 jsr wdt_maybe_pet:24 ROM:00004FEC bsr ssuConfigure:8 ROM:00004FEE mov.b @SSU_SSER:16, r0l ROM:00004FF2 and.b #0x3F, r0l ROM:00004FF4 mov.b r0l, @SSU_SSER:16 ROM:00004FF8 sub.b r0l, r0l ROM:00004FFA mov.b r0l, @SSU_SSSR:16 ROM:00004FFE mov.b @SSU_SSER:16, r0h ROM:00005002 or.b #0xC0, r0h ROM:00005004 mov.b r0h, @SSU_SSER:16 ROM:00005008 bclr #2, @IO_PDR1:8 ROM:0000500C ROM:0000500C loc_500C: ; CODE XREF: eepromWriteSingleByte+48j ROM:0000500C mov.b @SSU_SSSR:16, r0l ROM:00005010 bld #2, r0l ROM:00005012 bcc loc_500C:8 ROM:00005014 mov.b #5, r0l ; RDSR ROM:00005016 mov.b r0l, @SSU_SSTDR:16 ROM:0000501A bsr ssu_WaitForRx:8 ; -> r0= byte ROM:0000501C ROM:0000501C wait_chip_not_busy: ; CODE XREF: eepromWriteSingleByte+58j ROM:0000501C ; eepromWriteSingleByte+6Aj ROM:0000501C mov.b @SSU_SSSR:16, r0l ROM:00005020 bld #2, r0l ROM:00005022 bcc wait_chip_not_busy:8 ROM:00005024 mov.b #0xFF, r0l ROM:00005026 mov.b r0l, @SSU_SSTDR:16 ROM:0000502A jsr ssu_WaitForRx:24 ; -> r0= byte ROM:0000502E mov.b r0l, r6l ROM:00005030 and.b #1, r6l ROM:00005032 cmp.b #1, r6l ROM:00005034 beq wait_chip_not_busy:8 ROM:00005036 ROM:00005036 loc_5036: ; CODE XREF: eepromWriteSingleByte+72j ROM:00005036 mov.b @SSU_SSSR:16, r0l ROM:0000503A bld #3, r0l ROM:0000503C bcc loc_5036:8 ROM:0000503E bset #2, @IO_PDR1:8 ROM:00005042 mov.b @SSU_SSER:16, r0l ROM:00005046 and.b #0x3F, r0l ROM:00005048 mov.b r0l, @SSU_SSER:16 ROM:0000504C sub.b r0l, r0l ROM:0000504E mov.b r0l, @SSU_SSSR:16 ROM:00005052 mov.w #SSU_SSER, r1 ROM:00005056 bset #7, @er1 ROM:0000505A bclr #2, @IO_PDR1:8 ROM:0000505E ROM:0000505E loc_505E: ; CODE XREF: eepromWriteSingleByte+9Aj ROM:0000505E mov.b @SSU_SSSR:16, r0l ROM:00005062 bld #2, r0l ROM:00005064 bcc loc_505E:8 ROM:00005066 mov.b #6, r0l ; WREN ROM:00005068 mov.b r0l, @SSU_SSTDR:16 ROM:0000506C ROM:0000506C loc_506C: ; CODE XREF: eepromWriteSingleByte+A8j ROM:0000506C mov.b @SSU_SSSR:16, r0l ROM:00005070 bld #3, r0l ROM:00005072 bcc loc_506C:8 ROM:00005074 bset #2, @IO_PDR1:8 ROM:00005078 bclr #2, @IO_PDR1:8 ROM:0000507C ROM:0000507C loc_507C: ; CODE XREF: eepromWriteSingleByte+B8j ROM:0000507C mov.b @SSU_SSSR:16, r0l ROM:00005080 bld #2, r0l ROM:00005082 bcc loc_507C:8 ROM:00005084 mov.b #2, r0l ; WRITE ROM:00005086 mov.b r0l, @SSU_SSTDR:16 ROM:0000508A ROM:0000508A loc_508A: ; CODE XREF: eepromWriteSingleByte+C6j ROM:0000508A mov.b @SSU_SSSR:16, r0l ROM:0000508E bld #2, r0l ROM:00005090 bcc loc_508A:8 ROM:00005092 mov.b r6h, @SSU_SSTDR:16 ; adr hi ROM:00005096 mov.w e6, r0 ROM:00005098 mov.b r0l, r6l ROM:0000509A ROM:0000509A loc_509A: ; CODE XREF: eepromWriteSingleByte+D6j ROM:0000509A mov.b @SSU_SSSR:16, r0l ROM:0000509E bld #2, r0l ROM:000050A0 bcc loc_509A:8 ROM:000050A2 mov.b r6l, @SSU_SSTDR:16 ; adr lo ROM:000050A6 mov.b r5h, r6l ROM:000050A8 ROM:000050A8 loc_50A8: ; CODE XREF: eepromWriteSingleByte+E4j ROM:000050A8 mov.b @SSU_SSSR:16, r0l ROM:000050AC bld #2, r0l ROM:000050AE bcc loc_50A8:8 ROM:000050B0 mov.b r6l, @SSU_SSTDR:16 ; byte value ROM:000050B4 ROM:000050B4 loc_50B4: ; CODE XREF: eepromWriteSingleByte+F0j ROM:000050B4 mov.b @SSU_SSSR:16, r0l ROM:000050B8 bld #3, r0l ROM:000050BA bcc loc_50B4:8 ROM:000050BC bset #2, @IO_PDR1:8 ROM:000050C0 jsr ssu_Rx_Off:24 ROM:000050C4 mov.b @common_bit_flags:16, r0l ROM:000050C8 bld #6, r0l ROM:000050CA bcc loc_50D4:8 ROM:000050CC dec.b r5l ROM:000050CE ROM:000050CE loc_50CE: ; CODE XREF: eepromWriteSingleByte+1Aj ROM:000050CE mov.b r5l, r5l ROM:000050D0 bne loc_4FE8:16 ROM:000050D4 ROM:000050D4 loc_50D4: ; CODE XREF: eepromWriteSingleByte+100j ROM:000050D4 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000050D4 ; End of function eepromWriteSingleByte ROM:000050D4 ROM:000050D8 ROM:000050D8 ; =============== S U B R O U T I N E ======================================= ROM:000050D8 ROM:000050D8 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000050D8 ; ROM:000050D8 ; see docs for readRedundantDataFromEeprom for format info ROM:000050D8 ROM:000050D8 writeReliableDataToEeprom: ; CODE XREF: startWalkEepromActions+28p ROM:000050D8 ; startWalkEepromActions+44p ... ROM:000050D8 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000050DC mov.w r0, e5 ROM:000050DE mov.w e0, r4 ROM:000050E0 mov.w r1, r5 ROM:000050E2 mov.w e1, e6 ROM:000050E4 mov.b #1, r6h ROM:000050E6 mov.w e6, r1 ROM:000050E8 mov.w r5, e0 ROM:000050EA jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:000050EE sub.b r1l, r1l ROM:000050F0 bra loc_50FE:8 ROM:000050F2 ; --------------------------------------------------------------------------- ROM:000050F2 ROM:000050F2 loc_50F2: ; CODE XREF: writeReliableDataToEeprom+2Cj ROM:000050F2 mov.b r1l, r0l ROM:000050F4 extu.w r0 ROM:000050F6 add.w r5, r0 ROM:000050F8 mov.b @er0, r0l ROM:000050FA add.b r0l, r6h ROM:000050FC inc.b r1l ROM:000050FE ROM:000050FE loc_50FE: ; CODE XREF: writeReliableDataToEeprom+18j ROM:000050FE mov.b r1l, r0l ROM:00005100 extu.w r0 ROM:00005102 cmp.w e6, r0 ROM:00005104 bcs loc_50F2:8 ROM:00005106 add.w e6, e5 ROM:00005108 mov.w e5, r0 ROM:0000510A mov.b r6h, r1l ROM:0000510C jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00005110 mov.w r5, e0 ROM:00005112 mov.w e6, r1 ROM:00005114 mov.w r4, r0 ROM:00005116 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000511A mov.b r6h, r1l ROM:0000511C add.w e6, r4 ROM:0000511E mov.w r4, r0 ROM:00005120 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00005124 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00005124 ; End of function writeReliableDataToEeprom ROM:00005124 ROM:00005128 ROM:00005128 ; =============== S U B R O U T I N E ======================================= ROM:00005128 ROM:00005128 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00005128 ; ROM:00005128 ; data is stored in two provided locations and read to RAM ROM:00005128 ; each location includes a checksum right after the data (not inluded in length) ROM:00005128 ; ROM:00005128 ; if only one location has checksum-valid data, other is replaced with it ROM:00005128 ; ROM:00005128 ; if both appear valid, #0 is assumed dominant ROM:00005128 ; ROM:00005128 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00005128 ROM:00005128 readReliableDataFromEeprom: ; CODE XREF: startWalkEepromActions+AEp ROM:00005128 ; end_walk_action+42p ... ROM:00005128 param_eepromAddr0 = e5 ROM:00005128 param_eepromAddr1 = e6 ROM:00005128 param_ramAddr = r5 ROM:00005128 param_nBytes = r6 ROM:00005128 checksumLoc1 = e4 ROM:00005128 checksumLoc0 = e3 ROM:00005128 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:0000512C subs #4, sp ROM:0000512E mov.w r7, r4 ROM:00005130 mov.w r0, param_eepromAddr0 ROM:00005132 mov.w e0, param_eepromAddr1 ROM:00005134 mov.w r1, param_ramAddr ROM:00005136 mov.w e1, param_nBytes ROM:00005138 mov.w param_nBytes, r1 ROM:0000513A mov.w param_ramAddr, e0 ROM:0000513C mov.w param_eepromAddr1, r0 ROM:0000513E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005142 mov.w r4, r3 ROM:00005144 inc.w #1, r3 ROM:00005146 mov.b #1, r0l ; ckesum start value is 1 ROM:00005148 mov.b r0l, @er3 ROM:0000514A sub.b r0l, r0l ROM:0000514C ROM:0000514C sum_up_all_bytes_read_and_add_1: ROM:0000514C bra loc_5160:8 ROM:0000514E ; --------------------------------------------------------------------------- ROM:0000514E ROM:0000514E loc_514E: ; CODE XREF: readReliableDataFromEeprom+3Ej ROM:0000514E mov.b r2l, r0l ROM:00005150 extu.w r0 ROM:00005152 add.w param_ramAddr, r0 ROM:00005154 mov.b @er0, r0l ; read abyte from the data we got from eeprom ROM:00005156 mov.b @er3, r0h ROM:00005158 add.b r0l, r0h ; sum it upp with the running total ROM:0000515A mov.b r0h, @er3 ROM:0000515C mov.b r2l, r0l ROM:0000515E inc.b r0l ROM:00005160 ROM:00005160 loc_5160: ; CODE XREF: readReliableDataFromEeprom:sum_up_all_bytes_read_and_add_1j ROM:00005160 mov.b r0l, r2l ROM:00005162 extu.w r0 ROM:00005164 cmp.w param_nBytes, r0 ROM:00005166 bcs loc_514E:8 ROM:00005168 mov.w param_nBytes, r1 ROM:0000516A mov.w param_ramAddr, e0 ROM:0000516C mov.w param_eepromAddr0, r0 ROM:0000516E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005172 mov.b #1, r0l ROM:00005174 mov.b r0l, @er4 ROM:00005176 sub.b r0l, r0l ROM:00005178 ROM:00005178 sum_up_all_bytes_read_and_add_1_again: ROM:00005178 bra loc_518C:8 ROM:0000517A ; --------------------------------------------------------------------------- ROM:0000517A ROM:0000517A loc_517A: ; CODE XREF: readReliableDataFromEeprom+6Aj ROM:0000517A mov.b r2l, r0l ROM:0000517C extu.w r0 ROM:0000517E add.w param_ramAddr, r0 ROM:00005180 mov.b @er0, r0l ROM:00005182 mov.b @er4, r0h ROM:00005184 add.b r0l, r0h ROM:00005186 mov.b r0h, @er4 ROM:00005188 mov.b r2l, r0l ROM:0000518A inc.b r0l ROM:0000518C ROM:0000518C loc_518C: ; CODE XREF: readReliableDataFromEeprom:sum_up_all_bytes_read_and_add_1_againj ROM:0000518C mov.b r0l, r2l ROM:0000518E extu.w r0 ROM:00005190 cmp.w param_nBytes, r0 ROM:00005192 bcs loc_517A:8 ROM:00005194 sub.b r0l, r0l ROM:00005196 mov.b r0l, r2l ; r2l has error flags now ROM:00005198 mov.w param_eepromAddr0, checksumLoc0 ROM:0000519A add.w param_nBytes, checksumLoc0 ROM:0000519C mov.w checksumLoc0, r0 ROM:0000519E jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000051A2 mov.b @er4, r0h ROM:000051A4 cmp.b r0l, r0h ROM:000051A6 bne loc_51AE:8 ROM:000051A8 mov.b r2l, r0l ROM:000051AA bset #0, r0l ; OK flag for read #0 ROM:000051AC mov.b r0l, r2l ROM:000051AE ROM:000051AE loc_51AE: ; CODE XREF: readReliableDataFromEeprom+7Ej ROM:000051AE mov.w param_eepromAddr1, checksumLoc1 ROM:000051B0 add.w param_nBytes, checksumLoc1 ROM:000051B2 mov.w checksumLoc1, r0 ; eeprom addr1 + len has proper checksum for read 1 ROM:000051B4 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000051B8 mov.b @er3, r0h ROM:000051BA cmp.b r0l, r0h ROM:000051BC bne loc_51C4:8 ROM:000051BE mov.b r2l, r0l ROM:000051C0 bset #1, r0l ; OK flag for read #1 ROM:000051C2 mov.b r0l, r2l ROM:000051C4 ROM:000051C4 loc_51C4: ; CODE XREF: readReliableDataFromEeprom+94j ROM:000051C4 mov.b r2l, r0l ROM:000051C6 beq both_read_failed:8 ROM:000051C8 cmp.b #1, r0l ROM:000051CA beq only_read_0_worked_reread_it:8 ROM:000051CC cmp.b #2, r0l ROM:000051CE beq only_read_1_worked_rread_it:8 ROM:000051D0 cmp.b #3, r0l ROM:000051D2 bne out:8 ; never taken and impossible ROM:000051D4 bra both_reads_worked:8 ROM:000051D6 ; --------------------------------------------------------------------------- ROM:000051D6 ROM:000051D6 both_read_failed: ; CODE XREF: readReliableDataFromEeprom+9Ej ROM:000051D6 sub.b r3l, r3l ROM:000051D8 mov.b #0xFF, r1l ROM:000051DA ROM:000051DA fill_ram_with_0xFF: ROM:000051DA bra loc_51E6:8 ROM:000051DC ; --------------------------------------------------------------------------- ROM:000051DC ROM:000051DC loc_51DC: ; CODE XREF: readReliableDataFromEeprom+C4j ROM:000051DC mov.b r3l, r0l ROM:000051DE extu.w r0 ROM:000051E0 add.w param_ramAddr, r0 ROM:000051E2 mov.b r1l, @er0 ROM:000051E4 inc.b r3l ROM:000051E6 ROM:000051E6 loc_51E6: ; CODE XREF: readReliableDataFromEeprom:fill_ram_with_0xFFj ROM:000051E6 mov.b r3l, r0l ROM:000051E8 extu.w r0 ROM:000051EA cmp.w param_nBytes, r0 ROM:000051EC bcs loc_51DC:8 ROM:000051EE ROM:000051EE rewrite_both_areas: ROM:000051EE mov.w param_eepromAddr0, r0 ROM:000051F0 mov.w param_nBytes, r1 ROM:000051F2 mov.w param_ramAddr, e0 ROM:000051F4 bsr eepromWriteData:8 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:000051F6 mov.w checksumLoc0, r0 ROM:000051F8 mov.b #0xFF, r1l ROM:000051FA jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:000051FE mov.w param_nBytes, r1 ROM:00005200 mov.w param_ramAddr, e0 ROM:00005202 mov.w param_eepromAddr1, r0 ROM:00005204 bsr eepromWriteData:8 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005206 mov.w checksumLoc1, r0 ROM:00005208 mov.b #0xFF, r1l ROM:0000520A bra rewrite_a_checksum:8 ROM:0000520C ; --------------------------------------------------------------------------- ROM:0000520C ROM:0000520C only_read_0_worked_reread_it: ; CODE XREF: readReliableDataFromEeprom+A2j ROM:0000520C mov.w param_eepromAddr0, r0 ROM:0000520E mov.w param_nBytes, r1 ROM:00005210 mov.w param_ramAddr, e0 ROM:00005212 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005216 bra rewrite_area_1:8 ROM:00005218 ; --------------------------------------------------------------------------- ROM:00005218 ROM:00005218 only_read_1_worked_rread_it: ; CODE XREF: readReliableDataFromEeprom+A6j ROM:00005218 mov.w param_eepromAddr1, r0 ROM:0000521A mov.w param_nBytes, r1 ROM:0000521C mov.w param_ramAddr, e0 ROM:0000521E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005222 ROM:00005222 rewrite_area_0: ROM:00005222 mov.w param_nBytes, r1 ROM:00005224 mov.w param_ramAddr, e0 ROM:00005226 mov.w param_eepromAddr0, r0 ROM:00005228 bsr eepromWriteData:8 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000522A mov.b @er3, r1l ROM:0000522C mov.w checksumLoc0, r0 ROM:0000522E bra rewrite_a_checksum:8 ROM:00005230 ; --------------------------------------------------------------------------- ROM:00005230 ROM:00005230 both_reads_worked: ; CODE XREF: readReliableDataFromEeprom+ACj ROM:00005230 mov.b @er4, r0l ROM:00005232 mov.b r0h, r3l ; check that checksums match ROM:00005234 cmp.b r3l, r0l ; return the checksum ROM:00005236 beq out:8 ROM:00005238 ROM:00005238 rewrite_area_1: ; CODE XREF: readReliableDataFromEeprom+EEj ROM:00005238 mov.w param_nBytes, r1 ; if both checksums valid, asume #2 is better and replace #1 with it ROM:0000523A mov.w param_ramAddr, e0 ROM:0000523C mov.w param_eepromAddr1, r0 ROM:0000523E bsr eepromWriteData:8 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005240 mov.w checksumLoc1, r0 ROM:00005242 mov.b @er4, r1l ROM:00005244 ROM:00005244 rewrite_a_checksum: ; CODE XREF: readReliableDataFromEeprom+E2j ROM:00005244 ; readReliableDataFromEeprom+106j ROM:00005244 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:00005248 ROM:00005248 out: ; CODE XREF: readReliableDataFromEeprom+AAj ROM:00005248 ; readReliableDataFromEeprom+10Ej ROM:00005248 adds #4, sp ROM:0000524A jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000524A ; End of function readReliableDataFromEeprom ROM:0000524A ROM:0000524E ROM:0000524E ; =============== S U B R O U T I N E ======================================= ROM:0000524E ROM:0000524E ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000524E ROM:0000524E eepromWriteData: ; CODE XREF: copyTeamAndconfigDataFromStagingArea+2Cp ROM:0000524E ; copyTeamAndconfigDataFromStagingArea+56p ... ROM:0000524E retryCounter = r3l ROM:0000524E writeLen = e6 ROM:0000524E paramWriteLen = e5 ROM:0000524E eepromAddr = r6 ROM:0000524E paramEepromAddr = e4 ROM:0000524E paramRamDataSrc = e3 ROM:0000524E ramDataSrc = r4 ROM:0000524E ramDataSrc_ = er4 ROM:0000524E jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00005252 mov.w r0, paramEepromAddr ROM:00005254 mov.w e0, paramRamDataSrc ROM:00005256 mov.w r1, paramWriteLen ROM:00005258 mov.b #3, retryCounter ROM:0000525A mov.w #common_bit_flags, r2 ROM:0000525E bclr #6, @er2 ROM:00005262 jmp loc_537A:24 ROM:00005266 ; --------------------------------------------------------------------------- ROM:00005266 ROM:00005266 loc_5266: ; CODE XREF: eepromWriteData+12Ej ROM:00005266 jsr wdt_maybe_pet:24 ROM:0000526A mov.w paramRamDataSrc, ramDataSrc ROM:0000526C mov.w paramEepromAddr, eepromAddr ROM:0000526E mov.w paramWriteLen, writeLen ROM:00005270 jsr ssuConfigure:24 ROM:00005274 jmp loc_5366:24 ROM:00005278 ; --------------------------------------------------------------------------- ROM:00005278 ROM:00005278 more_to_write: ; CODE XREF: eepromWriteData+11Aj ROM:00005278 mov.b @SSU_SSER:16, r0l ROM:0000527C and.b #0x3F, r0l ROM:0000527E mov.b r0l, @SSU_SSER:16 ROM:00005282 sub.b r0l, r0l ROM:00005284 mov.b r0l, @SSU_SSSR:16 ROM:00005288 mov.b @SSU_SSER:16, r0h ROM:0000528C or.b #0xC0, r0h ; tx and rx on ROM:0000528E mov.b r0h, @SSU_SSER:16 ROM:00005292 bclr #2, @IO_PDR1:8 ROM:00005296 ROM:00005296 ssu_wait_tx_buf_has_space_6: ; CODE XREF: eepromWriteData+4Ej ROM:00005296 mov.b @SSU_SSSR:16, r0l ROM:0000529A bld #2, r0l ROM:0000529C bcc ssu_wait_tx_buf_has_space_6:8 ROM:0000529E mov.b #5, r0l ; instr RDSR ROM:000052A0 mov.b r0l, @SSU_SSTDR:16 ROM:000052A4 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000052A8 ROM:000052A8 wait_write_in_progress_over: ; CODE XREF: eepromWriteData+60j ROM:000052A8 ; eepromWriteData+72j ROM:000052A8 mov.b @SSU_SSSR:16, r0l ROM:000052AC bld #2, r0l ROM:000052AE bcc wait_write_in_progress_over:8 ROM:000052B0 mov.b #0xFF, r0l ROM:000052B2 mov.b r0l, @SSU_SSTDR:16 ROM:000052B6 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000052BA mov.b r0l, r5l ROM:000052BC and.b #1, r5l ROM:000052BE cmp.b #1, r5l ROM:000052C0 beq wait_write_in_progress_over:8 ROM:000052C2 ROM:000052C2 loc_52C2: ; CODE XREF: eepromWriteData+7Aj ROM:000052C2 mov.b @SSU_SSSR:16, r0l ROM:000052C6 bld #3, r0l ROM:000052C8 bcc loc_52C2:8 ROM:000052CA bset #2, @IO_PDR1:8 ROM:000052CE mov.b @SSU_SSER:16, r0l ROM:000052D2 and.b #0x3F, r0l ROM:000052D4 mov.b r0l, @SSU_SSER:16 ROM:000052D8 sub.b r0l, r0l ROM:000052DA mov.b r0l, @SSU_SSSR:16 ROM:000052DE mov.w #SSU_SSER, r1 ROM:000052E2 bset #7, @er1 ; TX ena ROM:000052E6 bclr #2, @IO_PDR1:8 ROM:000052EA ROM:000052EA ssu_wait_tx_buf_has_space_5: ; CODE XREF: eepromWriteData+A2j ROM:000052EA mov.b @SSU_SSSR:16, r0l ROM:000052EE bld #2, r0l ROM:000052F0 bcc ssu_wait_tx_buf_has_space_5:8 ROM:000052F2 mov.b #6, r0l ; cmd = WREN ROM:000052F4 mov.b r0l, @SSU_SSTDR:16 ROM:000052F8 ROM:000052F8 ssu_wait_tx_end_2: ; CODE XREF: eepromWriteData+B0j ROM:000052F8 mov.b @SSU_SSSR:16, r0l ROM:000052FC bld #3, r0l ROM:000052FE bcc ssu_wait_tx_end_2:8 ROM:00005300 bset #2, @IO_PDR1:8 ROM:00005304 bclr #2, @IO_PDR1:8 ROM:00005308 ROM:00005308 ssu_wait_tx_buf_has_space_4: ; CODE XREF: eepromWriteData+C0j ROM:00005308 mov.b @SSU_SSSR:16, r0l ROM:0000530C bld #2, r0l ROM:0000530E bcc ssu_wait_tx_buf_has_space_4:8 ROM:00005310 mov.b #2, r0l ; cmd = WRITE ROM:00005312 mov.b r0l, @SSU_SSTDR:16 ROM:00005316 mov.b r6h, r5l ; addr hi byte ROM:00005318 ROM:00005318 ssu_wait_tx_buf_has_space_3: ; CODE XREF: eepromWriteData+D0j ROM:00005318 mov.b @SSU_SSSR:16, r0l ROM:0000531C bld #2, r0l ROM:0000531E bcc ssu_wait_tx_buf_has_space_3:8 ROM:00005320 mov.b r5l, @SSU_SSTDR:16 ROM:00005324 mov.b r6l, r5l ; addr lo byte ROM:00005326 ROM:00005326 ssu_wait_tx_buf_has_space_2: ; CODE XREF: eepromWriteData+DEj ROM:00005326 mov.b @SSU_SSSR:16, r0l ROM:0000532A bld #2, r0l ROM:0000532C bcc ssu_wait_tx_buf_has_space_2:8 ROM:0000532E mov.b r5l, @SSU_SSTDR:16 ROM:00005332 sub.b r5l, r5l ROM:00005334 ROM:00005334 send_byte_loop: ; CODE XREF: eepromWriteData+10Aj ROM:00005334 mov.b @ramDataSrc_, r0h ; data byte ROM:00005336 ROM:00005336 ssu_wait_tx_buf_has_space: ; CODE XREF: eepromWriteData+EEj ROM:00005336 mov.b @SSU_SSSR:16, r0l ROM:0000533A bld #2, r0l ROM:0000533C bcc ssu_wait_tx_buf_has_space:8 ROM:0000533E mov.b r0h, @SSU_SSTDR:16 ROM:00005342 inc.w #1, ramDataSrc ROM:00005344 inc.w #1, eepromAddr ROM:00005346 dec.w #1, writeLen ROM:00005348 mov.w eepromAddr, r0 ROM:0000534A and.w #0x7F, r0 ROM:0000534E beq ssu_wait_tx_end:8 ; taken if we finished an eeprom page ROM:00005350 mov.w writeLen, writeLen ROM:00005352 beq ssu_wait_tx_end:8 ; taken if we're done writing ROM:00005354 inc.b r5l ROM:00005356 cmp.b #0x80, r5l ; 'Ç' ROM:00005358 bcs send_byte_loop:8 ROM:0000535A ROM:0000535A ssu_wait_tx_end: ; CODE XREF: eepromWriteData+100j ROM:0000535A ; eepromWriteData+104j ... ROM:0000535A mov.b @SSU_SSSR:16, r0l ROM:0000535E bld #3, r0l ROM:00005360 bcc ssu_wait_tx_end:8 ROM:00005362 bset #2, @IO_PDR1:8 ROM:00005366 ROM:00005366 loc_5366: ; CODE XREF: eepromWriteData+26j ROM:00005366 mov.w writeLen, writeLen ROM:00005368 bne more_to_write:16 ROM:0000536C jsr ssu_Rx_Off:24 ROM:00005370 mov.b @common_bit_flags:16, r0l ROM:00005374 bld #6, r0l ROM:00005376 bcc loc_5380:8 ROM:00005378 dec.b retryCounter ROM:0000537A ROM:0000537A loc_537A: ; CODE XREF: eepromWriteData+14j ROM:0000537A mov.b retryCounter, retryCounter ROM:0000537C bne loc_5266:16 ROM:00005380 ROM:00005380 loc_5380: ; CODE XREF: eepromWriteData+128j ROM:00005380 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00005380 ; End of function eepromWriteData ROM:00005380 ROM:00005384 ROM:00005384 ; =============== S U B R O U T I N E ======================================= ROM:00005384 ROM:00005384 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005384 ROM:00005384 eepromReadToRamAlso: ; CODE XREF: ENTRY+B8p ROM:00005384 ; copyTeamAndconfigDataFromStagingArea+22p ... ROM:00005384 retryCounter = r5h ROM:00005384 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00005388 mov.w r0, e4 ROM:0000538A mov.w e0, r3 ROM:0000538C mov.w r1, r4 ROM:0000538E mov.b #3, retryCounter ROM:00005390 mov.w #common_bit_flags, r2 ROM:00005394 bclr #6, @er2 ROM:00005398 jmp loc_5524:24 ROM:0000539C ; --------------------------------------------------------------------------- ROM:0000539C ROM:0000539C loc_539C: ; CODE XREF: eepromReadToRamAlso+1A2j ROM:0000539C jsr wdt_maybe_pet:24 ROM:000053A0 mov.w r3, r6 ROM:000053A2 mov.w e4, e6 ROM:000053A4 mov.w r4, e5 ROM:000053A6 jsr ssuConfigure:24 ROM:000053AA mov.b @SSU_SSER:16, r0l ROM:000053AE and.b #0x3F, r0l ROM:000053B0 mov.b r0l, @SSU_SSER:16 ROM:000053B4 sub.b r0l, r0l ROM:000053B6 mov.b r0l, @SSU_SSSR:16 ROM:000053BA mov.b @SSU_SSER:16, r0h ROM:000053BE or.b #0xC0, r0h ROM:000053C0 mov.b r0h, @SSU_SSER:16 ROM:000053C4 bclr #2, @IO_PDR1:8 ROM:000053C8 ROM:000053C8 loc_53C8: ; CODE XREF: eepromReadToRamAlso+4Aj ROM:000053C8 mov.b @SSU_SSSR:16, r0l ROM:000053CC bld #2, r0l ROM:000053CE bcc loc_53C8:8 ROM:000053D0 mov.b #5, r0l ROM:000053D2 mov.b r0l, @SSU_SSTDR:16 ROM:000053D6 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000053DA ROM:000053DA wait_eeprom_not_busy: ; CODE XREF: eepromReadToRamAlso+5Cj ROM:000053DA ; eepromReadToRamAlso+6Ej ROM:000053DA mov.b @SSU_SSSR:16, r0l ROM:000053DE bld #2, r0l ROM:000053E0 bcc wait_eeprom_not_busy:8 ROM:000053E2 mov.b #0xFF, r0l ROM:000053E4 mov.b r0l, @SSU_SSTDR:16 ROM:000053E8 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000053EC mov.b r0l, r5l ROM:000053EE and.b #1, r5l ROM:000053F0 cmp.b #1, r5l ROM:000053F2 beq wait_eeprom_not_busy:8 ROM:000053F4 ROM:000053F4 loc_53F4: ; CODE XREF: eepromReadToRamAlso+76j ROM:000053F4 mov.b @SSU_SSSR:16, r0l ROM:000053F8 bld #3, r0l ROM:000053FA bcc loc_53F4:8 ROM:000053FC bset #2, @IO_PDR1:8 ROM:00005400 mov.b @SSU_SSER:16, r0l ROM:00005404 and.b #0x3F, r0l ROM:00005406 mov.b r0l, @SSU_SSER:16 ROM:0000540A sub.b r0l, r0l ROM:0000540C mov.b r0l, @SSU_SSSR:16 ROM:00005410 mov.b @SSU_SSER:16, r0h ROM:00005414 or.b #0xC0, r0h ROM:00005416 mov.b r0h, @SSU_SSER:16 ROM:0000541A bclr #2, @IO_PDR1:8 ROM:0000541E ROM:0000541E loc_541E: ; CODE XREF: eepromReadToRamAlso+A0j ROM:0000541E mov.b @SSU_SSSR:16, r0l ROM:00005422 bld #2, r0l ROM:00005424 bcc loc_541E:8 ROM:00005426 mov.b #3, r0l ; reda command ROM:00005428 mov.b r0l, @SSU_SSTDR:16 ROM:0000542C ROM:0000542C loc_542C: ; CODE XREF: eepromReadToRamAlso+C8j ROM:0000542C mov.b @SSU_SSSR:16, r0l ROM:00005430 bld #6, r0l ROM:00005432 bcc loc_5446:8 ROM:00005434 mov.w #SSU_SSSR, r0 ROM:00005438 bclr #6, @er0 ROM:0000543C mov.w #common_bit_flags, r0 ROM:00005440 bset #6, @er0 ROM:00005444 bra loc_544E:8 ROM:00005446 ; --------------------------------------------------------------------------- ROM:00005446 ROM:00005446 loc_5446: ; CODE XREF: eepromReadToRamAlso+AEj ROM:00005446 mov.b @SSU_SSSR:16, r0l ROM:0000544A bld #1, r0l ROM:0000544C bcc loc_542C:8 ROM:0000544E ROM:0000544E loc_544E: ; CODE XREF: eepromReadToRamAlso+C0j ROM:0000544E mov.b @SSU_SSRDR:16, r0l ROM:00005452 mov.b r0l, @er6 ROM:00005454 mov.w e6, r0 ROM:00005456 mov.b r0h, r0l ROM:00005458 sub.b r0h, r0h ROM:0000545A mov.b r0l, r5l ROM:0000545C ROM:0000545C loc_545C: ; CODE XREF: eepromReadToRamAlso+DEj ROM:0000545C mov.b @SSU_SSSR:16, r0l ROM:00005460 bld #2, r0l ROM:00005462 bcc loc_545C:8 ROM:00005464 mov.b r5l, @SSU_SSTDR:16 ROM:00005468 ROM:00005468 loc_5468: ; CODE XREF: eepromReadToRamAlso+104j ROM:00005468 mov.b @SSU_SSSR:16, r0l ROM:0000546C bld #6, r0l ROM:0000546E bcc loc_5482:8 ROM:00005470 mov.w #SSU_SSSR, r0 ROM:00005474 bclr #6, @er0 ROM:00005478 mov.w #common_bit_flags, r0 ROM:0000547C bset #6, @er0 ROM:00005480 bra loc_548A:8 ROM:00005482 ; --------------------------------------------------------------------------- ROM:00005482 ROM:00005482 loc_5482: ; CODE XREF: eepromReadToRamAlso+EAj ROM:00005482 mov.b @SSU_SSSR:16, r0l ROM:00005486 bld #1, r0l ROM:00005488 bcc loc_5468:8 ROM:0000548A ROM:0000548A loc_548A: ; CODE XREF: eepromReadToRamAlso+FCj ROM:0000548A mov.b @SSU_SSRDR:16, r0l ROM:0000548E mov.b r0l, @er6 ROM:00005490 mov.w e6, r0 ROM:00005492 mov.b r0l, r5l ROM:00005494 ROM:00005494 loc_5494: ; CODE XREF: eepromReadToRamAlso+116j ROM:00005494 mov.b @SSU_SSSR:16, r0l ROM:00005498 bld #2, r0l ROM:0000549A bcc loc_5494:8 ROM:0000549C mov.b r5l, @SSU_SSTDR:16 ROM:000054A0 ROM:000054A0 loc_54A0: ; CODE XREF: eepromReadToRamAlso+13Cj ROM:000054A0 mov.b @SSU_SSSR:16, r0l ROM:000054A4 bld #6, r0l ROM:000054A6 bcc loc_54BA:8 ROM:000054A8 mov.w #SSU_SSSR, r0 ROM:000054AC bclr #6, @er0 ROM:000054B0 mov.w #common_bit_flags, r0 ROM:000054B4 bset #6, @er0 ROM:000054B8 bra loc_54C2:8 ROM:000054BA ; --------------------------------------------------------------------------- ROM:000054BA ROM:000054BA loc_54BA: ; CODE XREF: eepromReadToRamAlso+122j ROM:000054BA mov.b @SSU_SSSR:16, r0l ROM:000054BE bld #1, r0l ROM:000054C0 bcc loc_54A0:8 ROM:000054C2 ROM:000054C2 loc_54C2: ; CODE XREF: eepromReadToRamAlso+134j ROM:000054C2 mov.b @SSU_SSRDR:16, r0l ROM:000054C6 mov.b r0l, @er6 ROM:000054C8 bra loc_5506:8 ROM:000054CA ; --------------------------------------------------------------------------- ROM:000054CA ROM:000054CA loc_54CA: ; CODE XREF: eepromReadToRamAlso+14Cj ROM:000054CA ; eepromReadToRamAlso+184j ROM:000054CA mov.b @SSU_SSSR:16, r0l ROM:000054CE bld #2, r0l ROM:000054D0 bcc loc_54CA:8 ROM:000054D2 mov.b #0xFF, r0l ROM:000054D4 mov.b r0l, @SSU_SSTDR:16 ROM:000054D8 ROM:000054D8 loc_54D8: ; CODE XREF: eepromReadToRamAlso+174j ROM:000054D8 mov.b @SSU_SSSR:16, r0l ROM:000054DC bld #6, r0l ROM:000054DE bcc loc_54F2:8 ROM:000054E0 mov.w #SSU_SSSR, r0 ROM:000054E4 bclr #6, @er0 ROM:000054E8 mov.w #common_bit_flags, r0 ROM:000054EC bset #6, @er0 ROM:000054F0 bra loc_54FA:8 ROM:000054F2 ; --------------------------------------------------------------------------- ROM:000054F2 ROM:000054F2 loc_54F2: ; CODE XREF: eepromReadToRamAlso+15Aj ROM:000054F2 mov.b @SSU_SSSR:16, r0l ROM:000054F6 bld #1, r0l ROM:000054F8 bcc loc_54D8:8 ROM:000054FA ROM:000054FA loc_54FA: ; CODE XREF: eepromReadToRamAlso+16Cj ROM:000054FA mov.b @SSU_SSRDR:16, r0l ROM:000054FE mov.b r0l, @er6 ROM:00005500 inc.w #1, r6 ROM:00005502 inc.w #1, e6 ROM:00005504 dec.w #1, e5 ROM:00005506 ROM:00005506 loc_5506: ; CODE XREF: eepromReadToRamAlso+144j ROM:00005506 mov.w e5, e5 ROM:00005508 bne loc_54CA:8 ROM:0000550A ROM:0000550A loc_550A: ; CODE XREF: eepromReadToRamAlso+18Cj ROM:0000550A mov.b @SSU_SSSR:16, r0l ROM:0000550E bld #3, r0l ROM:00005510 bcc loc_550A:8 ROM:00005512 bset #2, @IO_PDR1:8 ROM:00005516 jsr ssu_Rx_Off:24 ROM:0000551A mov.b @common_bit_flags:16, r0l ROM:0000551E bld #6, r0l ROM:00005520 bcc loc_552A:8 ROM:00005522 dec.b retryCounter ROM:00005524 ROM:00005524 loc_5524: ; CODE XREF: eepromReadToRamAlso+14j ROM:00005524 mov.b retryCounter, retryCounter ROM:00005526 bne loc_539C:16 ROM:0000552A ROM:0000552A loc_552A: ; CODE XREF: eepromReadToRamAlso+19Cj ROM:0000552A jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000552A ; End of function eepromReadToRamAlso ROM:0000552A ROM:0000552E ROM:0000552E ; =============== S U B R O U T I N E ======================================= ROM:0000552E ROM:0000552E ; (r0 = eepromAddr) -> r0l byte ROM:0000552E ROM:0000552E eepromReadSingleByte: ; CODE XREF: ENTRY+1Cp ROM:0000552E ; irCommsEventLoop+882p ... ROM:0000552E retry_counter = r6h ROM:0000552E jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00005532 mov.w r0, e6 ROM:00005534 mov.b #3, retry_counter ROM:00005536 mov.w #common_bit_flags, r1 ROM:0000553A bclr #6, @er1 ROM:0000553E mov.w e6, r5 ROM:00005540 mov.b r5h, r5l ROM:00005542 sub.b r5h, r5h ROM:00005544 jmp loc_5628:24 ROM:00005548 ; --------------------------------------------------------------------------- ROM:00005548 ROM:00005548 loc_5548: ; CODE XREF: eepromReadSingleByte+FCj ROM:00005548 jsr wdt_maybe_pet:24 ROM:0000554C jsr ssuConfigure:24 ROM:00005550 mov.b @SSU_SSER:16, r0l ROM:00005554 and.b #0x3F, r0l ; tx off rx off ROM:00005556 mov.b r0l, @SSU_SSER:16 ROM:0000555A sub.b r0l, r0l ; clear errors ROM:0000555C mov.b r0l, @SSU_SSSR:16 ROM:00005560 mov.b @SSU_SSER:16, r0h ROM:00005564 or.b #0xC0, r0h ; tx and rx on ROM:00005566 mov.b r0h, @SSU_SSER:16 ROM:0000556A bclr #2, @IO_PDR1:8 ; port 1 bt 2 low ROM:0000556E ROM:0000556E wait_tx_space_avail: ; CODE XREF: eepromReadSingleByte+46j ROM:0000556E mov.b @SSU_SSSR:16, r0l ROM:00005572 bld #2, r0l ROM:00005574 bcc wait_tx_space_avail:8 ROM:00005576 mov.b #5, r0l ; cmd = RDSR ROM:00005578 mov.b r0l, @SSU_SSTDR:16 ROM:0000557C jsr ssu_WaitForRx:24 ; -> r0= byte ROM:00005580 ROM:00005580 wait_till_chip_not_busy_writing: ; CODE XREF: eepromReadSingleByte+58j ROM:00005580 ; eepromReadSingleByte+6Aj ROM:00005580 mov.b @SSU_SSSR:16, r0l ROM:00005584 bld #2, r0l ROM:00005586 bcc wait_till_chip_not_busy_writing:8 ROM:00005588 mov.b #0xFF, r0l ; send 0xFF (do not care) ROM:0000558A mov.b r0l, @SSU_SSTDR:16 ROM:0000558E jsr ssu_WaitForRx:24 ; -> r0= byte ROM:00005592 mov.b r0l, r6l ROM:00005594 and.b #1, r6l ROM:00005596 cmp.b #1, r6l ROM:00005598 beq wait_till_chip_not_busy_writing:8 ROM:0000559A ROM:0000559A waint_tx_end: ; CODE XREF: eepromReadSingleByte+72j ROM:0000559A mov.b @SSU_SSSR:16, r0l ROM:0000559E bld #3, r0l ROM:000055A0 bcc waint_tx_end:8 ROM:000055A2 bset #2, @IO_PDR1:8 ; port 1 bit 2 high (nCS released) ROM:000055A6 mov.b @SSU_SSER:16, r0l ROM:000055AA and.b #0x3F, r0l ; tx and rx off ROM:000055AC mov.b r0l, @SSU_SSER:16 ROM:000055B0 sub.b r0l, r0l ; clear status ROM:000055B2 mov.b r0l, @SSU_SSSR:16 ROM:000055B6 mov.b @SSU_SSER:16, r0h ROM:000055BA or.b #0xC0, r0h ; tx and rx on ROM:000055BC mov.b r0h, @SSU_SSER:16 ROM:000055C0 bclr #2, @IO_PDR1:8 ; nCS low again ROM:000055C4 ROM:000055C4 wait_Tx_space: ; CODE XREF: eepromReadSingleByte+9Cj ROM:000055C4 mov.b @SSU_SSSR:16, r0l ROM:000055C8 bld #2, r0l ROM:000055CA bcc wait_Tx_space:8 ROM:000055CC mov.b #3, r0l ; cmd = READ_FROM_MEMORY ROM:000055CE mov.b r0l, @SSU_SSTDR:16 ROM:000055D2 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000055D6 ROM:000055D6 wait_Tx_space_2: ; CODE XREF: eepromReadSingleByte+AEj ROM:000055D6 mov.b @SSU_SSSR:16, r0l ROM:000055DA bld #2, r0l ROM:000055DC bcc wait_Tx_space_2:8 ROM:000055DE mov.b r5l, @SSU_SSTDR:16 ; addr hi ROM:000055E2 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000055E6 mov.w e6, r0 ROM:000055E8 mov.b r0l, r6l ROM:000055EA ROM:000055EA wait_Tx_space_3: ; CODE XREF: eepromReadSingleByte+C2j ROM:000055EA mov.b @SSU_SSSR:16, r0l ROM:000055EE bld #2, r0l ROM:000055F0 bcc wait_Tx_space_3:8 ROM:000055F2 mov.b r6l, @SSU_SSTDR:16 ; addr lo ROM:000055F6 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000055FA ROM:000055FA wait_Tx_space_4: ; CODE XREF: eepromReadSingleByte+D2j ROM:000055FA mov.b @SSU_SSSR:16, r0l ROM:000055FE bld #2, r0l ROM:00005600 bcc wait_Tx_space_4:8 ROM:00005602 mov.b #0xFF, r0l ; send 0xFF (do not care) ROM:00005604 mov.b r0l, @SSU_SSTDR:16 ROM:00005608 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:0000560C mov.b r0l, r6l ; byte we just read ROM:0000560E ROM:0000560E wait_tx_end: ; CODE XREF: eepromReadSingleByte+E6j ROM:0000560E mov.b @SSU_SSSR:16, r0l ROM:00005612 bld #3, r0l ROM:00005614 bcc wait_tx_end:8 ROM:00005616 bset #2, @IO_PDR1:8 ROM:0000561A jsr ssu_Rx_Off:24 ROM:0000561E mov.b @common_bit_flags:16, r0l ROM:00005622 bld #6, r0l ROM:00005624 bcc it_worked:8 ROM:00005626 dec.b retry_counter ROM:00005628 ROM:00005628 loc_5628: ; CODE XREF: eepromReadSingleByte+16j ROM:00005628 mov.b retry_counter, retry_counter ROM:0000562A bne loc_5548:16 ROM:0000562E ROM:0000562E it_worked: ; CODE XREF: eepromReadSingleByte+F6j ROM:0000562E mov.b r6l, r0l ROM:00005630 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00005630 ; End of function eepromReadSingleByte ROM:00005630 ROM:00005634 ROM:00005634 ; =============== S U B R O U T I N E ======================================= ROM:00005634 ROM:00005634 ; (r0 = eepromAddress, r1l = byte) ROM:00005634 ROM:00005634 eepromFillPageWithByte: ; CODE XREF: eepromFactoryTest+BAp ROM:00005634 mov.w r0, e3 ROM:00005636 mov.b r1l, r4l ROM:00005638 mov.b #3, r5h ROM:0000563A mov.w #common_bit_flags, r2 ROM:0000563E bclr #6, @er2 ROM:00005642 mov.w e3, r2 ROM:00005644 mov.b r2h, r2l ROM:00005646 sub.b r2h, r2h ROM:00005648 mov.b r2l, r5l ROM:0000564A jmp loc_573A:24 ROM:0000564E ; --------------------------------------------------------------------------- ROM:0000564E ROM:0000564E loc_564E: ; CODE XREF: eepromFillPageWithByte+108j ROM:0000564E jsr ssuConfigure:24 ROM:00005652 mov.b @SSU_SSER:16, r0l ROM:00005656 and.b #0x3F, r0l ROM:00005658 mov.b r0l, @SSU_SSER:16 ROM:0000565C sub.b r0l, r0l ROM:0000565E mov.b r0l, @SSU_SSSR:16 ROM:00005662 mov.b @SSU_SSER:16, r0h ROM:00005666 or.b #0xC0, r0h ROM:00005668 mov.b r0h, @SSU_SSER:16 ROM:0000566C bclr #2, @IO_PDR1:8 ROM:00005670 ROM:00005670 loc_5670: ; CODE XREF: eepromFillPageWithByte+42j ROM:00005670 mov.b @SSU_SSSR:16, r0l ROM:00005674 bld #2, r0l ROM:00005676 bcc loc_5670:8 ROM:00005678 mov.b #5, r0l ROM:0000567A mov.b r0l, @SSU_SSTDR:16 ROM:0000567E jsr ssu_WaitForRx:24 ; -> r0= byte ROM:00005682 ROM:00005682 loc_5682: ; CODE XREF: eepromFillPageWithByte+54j ROM:00005682 ; eepromFillPageWithByte+66j ROM:00005682 mov.b @SSU_SSSR:16, r0l ROM:00005686 bld #2, r0l ROM:00005688 bcc loc_5682:8 ROM:0000568A mov.b #0xFF, r0l ROM:0000568C mov.b r0l, @SSU_SSTDR:16 ROM:00005690 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:00005694 mov.b r0l, r3l ROM:00005696 and.b #1, r3l ROM:00005698 cmp.b #1, r3l ROM:0000569A beq loc_5682:8 ROM:0000569C ROM:0000569C loc_569C: ; CODE XREF: eepromFillPageWithByte+6Ej ROM:0000569C mov.b @SSU_SSSR:16, r0l ROM:000056A0 bld #3, r0l ROM:000056A2 bcc loc_569C:8 ROM:000056A4 bset #2, @IO_PDR1:8 ROM:000056A8 mov.b @SSU_SSER:16, r0l ROM:000056AC and.b #0x3F, r0l ROM:000056AE mov.b r0l, @SSU_SSER:16 ROM:000056B2 sub.b r0l, r0l ROM:000056B4 mov.b r0l, @SSU_SSSR:16 ROM:000056B8 mov.w #SSU_SSER, r1 ROM:000056BC bset #7, @er1 ROM:000056C0 bclr #2, @IO_PDR1:8 ROM:000056C4 ROM:000056C4 loc_56C4: ; CODE XREF: eepromFillPageWithByte+96j ROM:000056C4 mov.b @SSU_SSSR:16, r0l ROM:000056C8 bld #2, r0l ROM:000056CA bcc loc_56C4:8 ROM:000056CC mov.b #6, r0l ROM:000056CE mov.b r0l, @SSU_SSTDR:16 ROM:000056D2 ROM:000056D2 loc_56D2: ; CODE XREF: eepromFillPageWithByte+A4j ROM:000056D2 mov.b @SSU_SSSR:16, r0l ROM:000056D6 bld #3, r0l ROM:000056D8 bcc loc_56D2:8 ROM:000056DA bset #2, @IO_PDR1:8 ROM:000056DE bclr #2, @IO_PDR1:8 ROM:000056E2 ROM:000056E2 loc_56E2: ; CODE XREF: eepromFillPageWithByte+B4j ROM:000056E2 mov.b @SSU_SSSR:16, r0l ROM:000056E6 bld #2, r0l ROM:000056E8 bcc loc_56E2:8 ROM:000056EA mov.b #2, r0l ROM:000056EC mov.b r0l, @SSU_SSTDR:16 ROM:000056F0 ROM:000056F0 loc_56F0: ; CODE XREF: eepromFillPageWithByte+C2j ROM:000056F0 mov.b @SSU_SSSR:16, r0l ROM:000056F4 bld #2, r0l ROM:000056F6 bcc loc_56F0:8 ROM:000056F8 mov.b r5l, @SSU_SSTDR:16 ROM:000056FC mov.w e3, r0 ROM:000056FE mov.b r0l, r3l ROM:00005700 ROM:00005700 loc_5700: ; CODE XREF: eepromFillPageWithByte+D2j ROM:00005700 mov.b @SSU_SSSR:16, r0l ROM:00005704 bld #2, r0l ROM:00005706 bcc loc_5700:8 ROM:00005708 mov.b r3l, @SSU_SSTDR:16 ROM:0000570C mov.b #0x80, r3l ; 'Ç' ROM:0000570E ROM:0000570E loc_570E: ; CODE XREF: eepromFillPageWithByte+EAj ROM:0000570E mov.b r4l, r0h ROM:00005710 ROM:00005710 loc_5710: ; CODE XREF: eepromFillPageWithByte+E2j ROM:00005710 mov.b @SSU_SSSR:16, r0l ROM:00005714 bld #2, r0l ROM:00005716 bcc loc_5710:8 ROM:00005718 mov.b r0h, @SSU_SSTDR:16 ROM:0000571C dec.b r3l ROM:0000571E bne loc_570E:8 ROM:00005720 ROM:00005720 loc_5720: ; CODE XREF: eepromFillPageWithByte+F2j ROM:00005720 mov.b @SSU_SSSR:16, r0l ROM:00005724 bld #3, r0l ROM:00005726 bcc loc_5720:8 ROM:00005728 bset #2, @IO_PDR1:8 ROM:0000572C jsr ssu_Rx_Off:24 ROM:00005730 mov.b @common_bit_flags:16, r0l ROM:00005734 bld #6, r0l ROM:00005736 bcc locret_5740:8 ROM:00005738 dec.b r5h ROM:0000573A ROM:0000573A loc_573A: ; CODE XREF: eepromFillPageWithByte+16j ROM:0000573A mov.b r5h, r5h ROM:0000573C bne loc_564E:16 ROM:00005740 ROM:00005740 locret_5740: ; CODE XREF: eepromFillPageWithByte+102j ROM:00005740 rts ROM:00005740 ; End of function eepromFillPageWithByte ROM:00005740 ROM:00005742 ROM:00005742 ; =============== S U B R O U T I N E ======================================= ROM:00005742 ROM:00005742 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:00005742 ROM:00005742 eepromFillWithByte: ; CODE XREF: performActionAsRequestedByRemote+108p ROM:00005742 ; startWalkEepromActions+6Ap ... ROM:00005742 retryCounter = r4l ROM:00005742 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00005746 mov.w r0, e4 ROM:00005748 mov.w e0, e5 ROM:0000574A mov.b r1l, r4h ROM:0000574C mov.b #3, retryCounter ROM:0000574E mov.w #common_bit_flags, r2 ROM:00005752 bclr #6, @er2 ROM:00005756 jmp loc_586A:24 ROM:0000575A ; --------------------------------------------------------------------------- ROM:0000575A ROM:0000575A loc_575A: ; CODE XREF: eepromFillWithByte+12Aj ROM:0000575A jsr wdt_maybe_pet:24 ROM:0000575E mov.w e4, r6 ROM:00005760 mov.w e5, e6 ROM:00005762 jsr ssuConfigure:24 ROM:00005766 jmp loc_5856:24 ROM:0000576A ; --------------------------------------------------------------------------- ROM:0000576A ROM:0000576A loc_576A: ; CODE XREF: eepromFillWithByte+116j ROM:0000576A mov.b @SSU_SSER:16, r0l ROM:0000576E and.b #0x3F, r0l ROM:00005770 mov.b r0l, @SSU_SSER:16 ROM:00005774 sub.b r0l, r0l ROM:00005776 mov.b r0l, @SSU_SSSR:16 ROM:0000577A mov.b @SSU_SSER:16, r0h ROM:0000577E or.b #0xC0, r0h ; tx and rx on ROM:00005780 mov.b r0h, @SSU_SSER:16 ROM:00005784 bclr #2, @IO_PDR1:8 ; eeprom selected ROM:00005788 ROM:00005788 wait_can_tx: ; CODE XREF: eepromFillWithByte+4Cj ROM:00005788 mov.b @SSU_SSSR:16, r0l ROM:0000578C bld #2, r0l ROM:0000578E bcc wait_can_tx:8 ROM:00005790 mov.b #5, r0l ; RDSR ROM:00005792 mov.b r0l, @SSU_SSTDR:16 ROM:00005796 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:0000579A ROM:0000579A wait_eeprom_not_busy: ; CODE XREF: eepromFillWithByte+5Ej ROM:0000579A ; eepromFillWithByte+70j ROM:0000579A mov.b @SSU_SSSR:16, r0l ROM:0000579E bld #2, r0l ROM:000057A0 bcc wait_eeprom_not_busy:8 ROM:000057A2 mov.b #0xFF, r0l ; stuff bits ROM:000057A4 mov.b r0l, @SSU_SSTDR:16 ROM:000057A8 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000057AC mov.b r0l, r5l ROM:000057AE and.b #1, r5l ROM:000057B0 cmp.b #1, r5l ROM:000057B2 beq wait_eeprom_not_busy:8 ROM:000057B4 ROM:000057B4 wait_tx_done: ; CODE XREF: eepromFillWithByte+78j ROM:000057B4 mov.b @SSU_SSSR:16, r0l ROM:000057B8 bld #3, r0l ROM:000057BA bcc wait_tx_done:8 ROM:000057BC bset #2, @IO_PDR1:8 ROM:000057C0 mov.b @SSU_SSER:16, r0l ROM:000057C4 and.b #0x3F, r0l ROM:000057C6 mov.b r0l, @SSU_SSER:16 ROM:000057CA sub.b r0l, r0l ROM:000057CC mov.b r0l, @SSU_SSSR:16 ROM:000057D0 mov.w #SSU_SSER, r1 ROM:000057D4 bset #7, @er1 ; tx on ROM:000057D8 bclr #2, @IO_PDR1:8 ROM:000057DC ROM:000057DC wait_can_tx_2: ; CODE XREF: eepromFillWithByte+A0j ROM:000057DC mov.b @SSU_SSSR:16, r0l ROM:000057E0 bld #2, r0l ROM:000057E2 bcc wait_can_tx_2:8 ROM:000057E4 mov.b #6, r0l ; WREN ROM:000057E6 mov.b r0l, @SSU_SSTDR:16 ROM:000057EA ROM:000057EA wait_can_tx_3: ; CODE XREF: eepromFillWithByte+AEj ROM:000057EA mov.b @SSU_SSSR:16, r0l ROM:000057EE bld #3, r0l ROM:000057F0 bcc wait_can_tx_3:8 ROM:000057F2 bset #2, @IO_PDR1:8 ; cs released ROM:000057F6 bclr #2, @IO_PDR1:8 ; cs taken ROM:000057FA ROM:000057FA wait_can_tx_4: ; CODE XREF: eepromFillWithByte+BEj ROM:000057FA mov.b @SSU_SSSR:16, r0l ROM:000057FE bld #2, r0l ROM:00005800 bcc wait_can_tx_4:8 ROM:00005802 mov.b #2, r0l ; write ROM:00005804 mov.b r0l, @SSU_SSTDR:16 ROM:00005808 mov.b r6h, r5l ROM:0000580A ROM:0000580A wait_can_tx_5: ; CODE XREF: eepromFillWithByte+CEj ROM:0000580A mov.b @SSU_SSSR:16, r0l ROM:0000580E bld #2, r0l ROM:00005810 bcc wait_can_tx_5:8 ROM:00005812 mov.b r5l, @SSU_SSTDR:16 ; addrHi ROM:00005816 mov.b r6l, r5l ROM:00005818 ROM:00005818 wait_can_tx_6: ; CODE XREF: eepromFillWithByte+DCj ROM:00005818 mov.b @SSU_SSSR:16, r0l ROM:0000581C bld #2, r0l ROM:0000581E bcc wait_can_tx_6:8 ROM:00005820 mov.b r5l, @SSU_SSTDR:16 ; addrLo ROM:00005824 sub.b r5l, r5l ROM:00005826 ROM:00005826 loc_5826: ; CODE XREF: eepromFillWithByte+106j ROM:00005826 mov.b r4h, r0h ROM:00005828 ROM:00005828 wait_can_tx_7: ; CODE XREF: eepromFillWithByte+ECj ROM:00005828 mov.b @SSU_SSSR:16, r0l ROM:0000582C bld #2, r0l ROM:0000582E bcc wait_can_tx_7:8 ROM:00005830 mov.b r0h, @SSU_SSTDR:16 ROM:00005834 inc.w #1, r6 ROM:00005836 dec.w #1, e6 ROM:00005838 mov.w r6, r0 ROM:0000583A and.w #0x7F, r0 ROM:0000583E beq loc_584A:8 ROM:00005840 mov.w e6, e6 ROM:00005842 beq loc_584A:8 ROM:00005844 inc.b r5l ROM:00005846 cmp.b #0x80, r5l ; 'Ç' ROM:00005848 bcs loc_5826:8 ROM:0000584A ROM:0000584A loc_584A: ; CODE XREF: eepromFillWithByte+FCj ROM:0000584A ; eepromFillWithByte+100j ... ROM:0000584A mov.b @SSU_SSSR:16, r0l ROM:0000584E bld #3, r0l ROM:00005850 bcc loc_584A:8 ROM:00005852 bset #2, @IO_PDR1:8 ROM:00005856 ROM:00005856 loc_5856: ; CODE XREF: eepromFillWithByte+24j ROM:00005856 mov.w e6, e6 ROM:00005858 bne loc_576A:16 ROM:0000585C jsr ssu_Rx_Off:24 ROM:00005860 mov.b @common_bit_flags:16, r0l ROM:00005864 bld #6, r0l ROM:00005866 bcc loc_5870:8 ROM:00005868 dec.b retryCounter ROM:0000586A ROM:0000586A loc_586A: ; CODE XREF: eepromFillWithByte+14j ROM:0000586A mov.b retryCounter, retryCounter ROM:0000586C bne loc_575A:16 ROM:00005870 ROM:00005870 loc_5870: ; CODE XREF: eepromFillWithByte+124j ROM:00005870 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00005870 ; End of function eepromFillWithByte ROM:00005870 ROM:00005874 ROM:00005874 ; =============== S U B R O U T I N E ======================================= ROM:00005874 ROM:00005874 ; (r0 = eepromAddr, e0 = data in RAM) //always 0x80 bytes written ROM:00005874 ROM:00005874 eepromWrite128Bytes: ; CODE XREF: irCommsEventLoop:loc_1290p ROM:00005874 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00005878 mov.w r0, e5 ROM:0000587A mov.w e0, r3 ROM:0000587C mov.b #3, r5l ROM:0000587E mov.w #common_bit_flags, r1 ROM:00005882 bclr #6, @er1 ROM:00005886 jmp loc_5986:24 ROM:0000588A ; --------------------------------------------------------------------------- ROM:0000588A ROM:0000588A loc_588A: ; CODE XREF: eepromWrite128Bytes+114j ROM:0000588A jsr wdt_maybe_pet:24 ROM:0000588E mov.w r3, r4 ROM:00005890 mov.w e5, e6 ROM:00005892 jsr ssuConfigure:24 ROM:00005896 mov.b @SSU_SSER:16, r0l ROM:0000589A and.b #0x3F, r0l ROM:0000589C mov.b r0l, @SSU_SSER:16 ROM:000058A0 sub.b r0l, r0l ROM:000058A2 mov.b r0l, @SSU_SSSR:16 ROM:000058A6 mov.b @SSU_SSER:16, r0h ROM:000058AA or.b #0xC0, r0h ROM:000058AC mov.b r0h, @SSU_SSER:16 ROM:000058B0 bclr #2, @IO_PDR1:8 ROM:000058B4 ROM:000058B4 loc_58B4: ; CODE XREF: eepromWrite128Bytes+46j ROM:000058B4 mov.b @SSU_SSSR:16, r0l ROM:000058B8 bld #2, r0l ROM:000058BA bcc loc_58B4:8 ROM:000058BC mov.b #5, r0l ROM:000058BE mov.b r0l, @SSU_SSTDR:16 ROM:000058C2 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000058C6 ROM:000058C6 loc_58C6: ; CODE XREF: eepromWrite128Bytes+58j ROM:000058C6 ; eepromWrite128Bytes+6Aj ROM:000058C6 mov.b @SSU_SSSR:16, r0l ROM:000058CA bld #2, r0l ROM:000058CC bcc loc_58C6:8 ROM:000058CE mov.b #0xFF, r0l ROM:000058D0 mov.b r0l, @SSU_SSTDR:16 ROM:000058D4 jsr ssu_WaitForRx:24 ; -> r0= byte ROM:000058D8 mov.b r0l, r6l ROM:000058DA and.b #1, r6l ROM:000058DC cmp.b #1, r6l ROM:000058DE beq loc_58C6:8 ROM:000058E0 ROM:000058E0 loc_58E0: ; CODE XREF: eepromWrite128Bytes+72j ROM:000058E0 mov.b @SSU_SSSR:16, r0l ROM:000058E4 bld #3, r0l ROM:000058E6 bcc loc_58E0:8 ROM:000058E8 bset #2, @IO_PDR1:8 ROM:000058EC mov.b @SSU_SSER:16, r0l ROM:000058F0 and.b #0x3F, r0l ROM:000058F2 mov.b r0l, @SSU_SSER:16 ROM:000058F6 sub.b r0l, r0l ROM:000058F8 mov.b r0l, @SSU_SSSR:16 ROM:000058FC mov.w #SSU_SSER, r1 ROM:00005900 bset #7, @er1 ROM:00005904 bclr #2, @IO_PDR1:8 ROM:00005908 ROM:00005908 loc_5908: ; CODE XREF: eepromWrite128Bytes+9Aj ROM:00005908 mov.b @SSU_SSSR:16, r0l ROM:0000590C bld #2, r0l ROM:0000590E bcc loc_5908:8 ROM:00005910 mov.b #6, r0l ROM:00005912 mov.b r0l, @SSU_SSTDR:16 ROM:00005916 ROM:00005916 loc_5916: ; CODE XREF: eepromWrite128Bytes+A8j ROM:00005916 mov.b @SSU_SSSR:16, r0l ROM:0000591A bld #3, r0l ROM:0000591C bcc loc_5916:8 ROM:0000591E bset #2, @IO_PDR1:8 ROM:00005922 bclr #2, @IO_PDR1:8 ROM:00005926 ROM:00005926 loc_5926: ; CODE XREF: eepromWrite128Bytes+B8j ROM:00005926 mov.b @SSU_SSSR:16, r0l ROM:0000592A bld #2, r0l ROM:0000592C bcc loc_5926:8 ROM:0000592E mov.b #2, r0l ROM:00005930 mov.b r0l, @SSU_SSTDR:16 ROM:00005934 mov.w e6, r0 ROM:00005936 mov.b r0h, r0l ROM:00005938 sub.b r0h, r0h ROM:0000593A mov.b r0l, r6l ROM:0000593C ROM:0000593C loc_593C: ; CODE XREF: eepromWrite128Bytes+CEj ROM:0000593C mov.b @SSU_SSSR:16, r0l ROM:00005940 bld #2, r0l ROM:00005942 bcc loc_593C:8 ROM:00005944 mov.b r6l, @SSU_SSTDR:16 ROM:00005948 mov.w e6, r0 ROM:0000594A mov.b r0l, r6l ROM:0000594C ROM:0000594C loc_594C: ; CODE XREF: eepromWrite128Bytes+DEj ROM:0000594C mov.b @SSU_SSSR:16, r0l ROM:00005950 bld #2, r0l ROM:00005952 bcc loc_594C:8 ROM:00005954 mov.b r6l, @SSU_SSTDR:16 ROM:00005958 mov.b #0x80, r6l ; 'Ç' ROM:0000595A ROM:0000595A loc_595A: ; CODE XREF: eepromWrite128Bytes+F6j ROM:0000595A mov.b @er4+, r0h ROM:0000595C ROM:0000595C loc_595C: ; CODE XREF: eepromWrite128Bytes+EEj ROM:0000595C mov.b @SSU_SSSR:16, r0l ROM:00005960 bld #2, r0l ROM:00005962 bcc loc_595C:8 ROM:00005964 mov.b r0h, @SSU_SSTDR:16 ROM:00005968 dec.b r6l ROM:0000596A bne loc_595A:8 ROM:0000596C ROM:0000596C loc_596C: ; CODE XREF: eepromWrite128Bytes+FEj ROM:0000596C mov.b @SSU_SSSR:16, r0l ROM:00005970 bld #3, r0l ROM:00005972 bcc loc_596C:8 ROM:00005974 bset #2, @IO_PDR1:8 ROM:00005978 jsr ssu_Rx_Off:24 ROM:0000597C mov.b @common_bit_flags:16, r0l ROM:00005980 bld #6, r0l ROM:00005982 bcc loc_598C:8 ROM:00005984 dec.b r5l ROM:00005986 ROM:00005986 loc_5986: ; CODE XREF: eepromWrite128Bytes+12j ROM:00005986 mov.b r5l, r5l ROM:00005988 bne loc_588A:16 ROM:0000598C ROM:0000598C loc_598C: ; CODE XREF: eepromWrite128Bytes+10Ej ROM:0000598C jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000598C ; End of function eepromWrite128Bytes ROM:0000598C ROM:00005990 ROM:00005990 ; =============== S U B R O U T I N E ======================================= ROM:00005990 ROM:00005990 ; () -> () ROM:00005990 ROM:00005990 factoryTestPerformIfNeeded: ; CODE XREF: ENTRY+72p ROM:00005990 ROM:00005990 ; FUNCTION CHUNK AT ROM:00007A2A SIZE 00000016 BYTES ROM:00005990 ROM:00005990 jsr common_prologue_2:24 ROM:00005994 ldc.b #0x80, ccr ; 'Ç' ; ints off ROM:00005996 mov.b #0xC0, r0l ; '+' ; rx and tx on ROM:00005998 mov.b r0l, @SSU_SSER:16 ROM:0000599C mov.b @SSU_SSMR:16, r0l ROM:000059A0 and.b #0xF8, r0l ; clk/32 clock ROM:000059A2 or.b #6, r0l ROM:000059A4 mov.b r0l, @SSU_SSMR:16 ROM:000059A8 mov.b @SSU_SSSR:16, r0l ROM:000059AC bld #6, r0l ROM:000059AE bcc loc_59B8:8 ROM:000059B0 mov.w #SSU_SSSR, r0 ; clear overrun if it had occured ROM:000059B4 bclr #6, @er0 ROM:000059B8 ROM:000059B8 loc_59B8: ; CODE XREF: factoryTestPerformIfNeeded+1Ej ROM:000059B8 bclr #0, @IO_PDR1:8 ; port 1 pin 0 low ROM:000059BC ROM:000059BC wait_tx_avail: ; CODE XREF: factoryTestPerformIfNeeded+32j ROM:000059BC mov.b @SSU_SSSR:16, r0l ROM:000059C0 bld #2, r0l ROM:000059C2 bcc wait_tx_avail:8 ROM:000059C4 mov.b #0xE2, r0l ; 'G' ; send 0xE2 ROM:000059C6 mov.b r0l, @SSU_SSTDR:16 ROM:000059CA ROM:000059CA wait_tx_done: ; CODE XREF: factoryTestPerformIfNeeded+40j ROM:000059CA mov.b @SSU_SSSR:16, r0l ROM:000059CE bld #3, r0l ROM:000059D0 bcc wait_tx_done:8 ROM:000059D2 bset #0, @IO_PDR1:8 ; cs rleased ROM:000059D6 ROM:000059D6 wait_have_rx: ; CODE XREF: factoryTestPerformIfNeeded+4Cj ROM:000059D6 mov.b @SSU_SSSR:16, r0l ROM:000059DA bld #1, r0l ROM:000059DC bcc wait_have_rx:8 ROM:000059DE mov.b @SSU_SSRDR:16, r6l ; read rxed byte ROM:000059E2 mov.b #0x80, r0l ; 'Ç' ROM:000059E4 mov.b r0l, @SSU_SSER:16 ; tx only on ROM:000059E8 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:000059EC cmp.b #0xAA, r6l ; '¬' ROM:000059EE beq nintendoDebugToolPresent:8 ROM:000059F0 bclr #0, @IO_PDR1:8 ; cs set ROM:000059F4 ROM:000059F4 wait_Tx_space: ; CODE XREF: factoryTestPerformIfNeeded+6Aj ROM:000059F4 mov.b @SSU_SSSR:16, r0l ROM:000059F8 bld #2, r0l ROM:000059FA bcc wait_Tx_space:8 ROM:000059FC mov.b #0xB0, r0l ; '¦' ; send 0xb0 ROM:000059FE mov.b r0l, @SSU_SSTDR:16 ROM:00005A02 ROM:00005A02 wait_tx_done_2: ; CODE XREF: factoryTestPerformIfNeeded+78j ROM:00005A02 mov.b @SSU_SSSR:16, r0l ROM:00005A06 bld #3, r0l ROM:00005A08 bcc wait_tx_done_2:8 ROM:00005A0A bset #0, @IO_PDR1:8 ; cs released ROM:00005A0E jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:00005A12 jmp out_release_cs:24 ROM:00005A16 ; --------------------------------------------------------------------------- ROM:00005A16 ROM:00005A16 nintendoDebugToolPresent: ; CODE XREF: factoryTestPerformIfNeeded+5Ej ROM:00005A16 mov.b @VERSION_A:16, r6l ; value there is 0 ROM:00005A1A bclr #0, @IO_PDR1:8 ; cs se;lected ROM:00005A1E ROM:00005A1E wait_Tx_space_2: ; CODE XREF: factoryTestPerformIfNeeded+94j ROM:00005A1E mov.b @SSU_SSSR:16, r0l ROM:00005A22 bld #2, r0l ROM:00005A24 bcc wait_Tx_space_2:8 ROM:00005A26 mov.b r6l, @SSU_SSTDR:16 ; send the zero ROM:00005A2A ROM:00005A2A wait_tx_done_3: ; CODE XREF: factoryTestPerformIfNeeded+A0j ROM:00005A2A mov.b @SSU_SSSR:16, r0l ROM:00005A2E bld #3, r0l ROM:00005A30 bcc wait_tx_done_3:8 ROM:00005A32 bset #0, @IO_PDR1:8 ; cs released ROM:00005A36 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:00005A3A mov.b @VERSION_B:16, r6l ; 2 here ROM:00005A3E bclr #0, @IO_PDR1:8 ; cs selected ROM:00005A42 ROM:00005A42 wait_Tx_space_3: ; CODE XREF: factoryTestPerformIfNeeded+B8j ROM:00005A42 mov.b @SSU_SSSR:16, r0l ROM:00005A46 bld #2, r0l ROM:00005A48 bcc wait_Tx_space_3:8 ROM:00005A4A mov.b r6l, @SSU_SSTDR:16 ; send the 2 ROM:00005A4E ROM:00005A4E wait_tx_done_4: ; CODE XREF: factoryTestPerformIfNeeded+C4j ROM:00005A4E mov.b @SSU_SSSR:16, r0l ROM:00005A52 bld #3, r0l ROM:00005A54 bcc wait_tx_done_4:8 ROM:00005A56 bset #0, @IO_PDR1:8 ; select ROM:00005A5A jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:00005A5E sub.w r6, r6 ROM:00005A60 ROM:00005A60 loc_5A60: ; CODE XREF: factoryTestPerformIfNeeded+FAj ROM:00005A60 mov.b @(aJun262009:16,er6), r0h ; "Jun 26 2009" ROM:00005A64 bclr #0, @IO_PDR1:8 ROM:00005A68 ROM:00005A68 wait_Tx_space_4: ; CODE XREF: factoryTestPerformIfNeeded+DEj ROM:00005A68 mov.b @SSU_SSSR:16, r0l ROM:00005A6C bld #2, r0l ROM:00005A6E bcc wait_Tx_space_4:8 ROM:00005A70 mov.b r0h, @SSU_SSTDR:16 ; send a byte ROM:00005A74 ROM:00005A74 wait_tx_done_5: ; CODE XREF: factoryTestPerformIfNeeded+EAj ROM:00005A74 mov.b @SSU_SSSR:16, r0l ROM:00005A78 bld #3, r0l ROM:00005A7A bcc wait_tx_done_5:8 ROM:00005A7C bset #0, @IO_PDR1:8 ; cs deselected ROM:00005A80 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:00005A84 inc.w #1, r6 ROM:00005A86 cmp.w #0xC, r6 ROM:00005A8A blt loc_5A60:8 ROM:00005A8C mov.b #0x9E, r0l ; 'P' ROM:00005A8E mov.b r0l, @WDT_TCSRWD1:8 ROM:00005A90 mov.b #0xA2, r0l ; 'ó' ROM:00005A92 mov.b r0l, @WDT_TCSRWD1:8 ROM:00005A94 mov.b #0x8E, r0l ; 'Ä' ROM:00005A96 mov.b r0l, @WDT_TCSRWD1:8 ROM:00005A98 bclr #0, @IO_PDR1:8 ; cs selected ROM:00005A9C ROM:00005A9C wait_Tx_space_5: ; CODE XREF: factoryTestPerformIfNeeded+112j ROM:00005A9C mov.b @SSU_SSSR:16, r0l ROM:00005AA0 bld #2, r0l ROM:00005AA2 bcc wait_Tx_space_5:8 ROM:00005AA4 mov.b #4, r0l ; send 4 ROM:00005AA6 mov.b r0l, @SSU_SSTDR:16 ROM:00005AAA ROM:00005AAA wait_tx_done_7: ; CODE XREF: factoryTestPerformIfNeeded+120j ROM:00005AAA mov.b @SSU_SSSR:16, r0l ROM:00005AAE bld #3, r0l ROM:00005AB0 bcc wait_tx_done_7:8 ROM:00005AB2 bset #0, @IO_PDR1:8 ; cs released ROM:00005AB6 sub.w r0, r0 ROM:00005AB8 jsr eepromFactoryTest:24 ; (r0 = eepromAddrForStart) -> bool success in r0l ROM:00005AB8 ; wipes all eeprom after the given address, which must be a factor of 256 ROM:00005ABC mov.b r0l, r0l ROM:00005ABE bne eeprom_Factory_test_succeeded:8 ROM:00005AC0 ROM:00005AC0 eeprom_Factory_test_failed: ; select ROM:00005AC0 bclr #0, @IO_PDR1:8 ROM:00005AC4 ROM:00005AC4 wait_Tx_space_6: ; CODE XREF: factoryTestPerformIfNeeded+13Aj ROM:00005AC4 mov.b @SSU_SSSR:16, r0l ROM:00005AC8 bld #2, r0l ROM:00005ACA bcc wait_Tx_space_6:8 ROM:00005ACC mov.b #0xF4, r0l ; '(' ; send 0xF4 ROM:00005ACE mov.b r0l, @SSU_SSTDR:16 ROM:00005AD2 ROM:00005AD2 wait_tx_done_8: ; CODE XREF: factoryTestPerformIfNeeded+148j ROM:00005AD2 mov.b @SSU_SSSR:16, r0l ROM:00005AD6 bld #3, r0l ROM:00005AD8 bcc wait_tx_done_8:8 ROM:00005ADA bset #0, @IO_PDR1:8 ROM:00005ADE ROM:00005ADE infinite_loop_on_fail: ; CODE XREF: factoryTestPerformIfNeeded:infinite_loop_on_failj ROM:00005ADE bra infinite_loop_on_fail:8 ROM:00005AE0 ; --------------------------------------------------------------------------- ROM:00005AE0 ROM:00005AE0 eeprom_Factory_test_succeeded: ; CODE XREF: factoryTestPerformIfNeeded+12Ej ROM:00005AE0 mov.w #0x101, r0 ROM:00005AE4 jsr some_sort_of_eeprom_init:24 ; (bool r0l = wipeOutEventBitfield, bool r0h = wipeOutStepsAtLastSync) ROM:00005AE8 bclr #0, @IO_PDR1:8 ; cs taken ROM:00005AEC ROM:00005AEC loc_5AEC: ; CODE XREF: factoryTestPerformIfNeeded+162j ROM:00005AEC mov.b @SSU_SSSR:16, r0l ROM:00005AF0 bld #2, r0l ROM:00005AF2 bcc loc_5AEC:8 ROM:00005AF4 mov.b #3, r0l ; send a 3 ROM:00005AF6 mov.b r0l, @SSU_SSTDR:16 ROM:00005AFA ROM:00005AFA loc_5AFA: ; CODE XREF: factoryTestPerformIfNeeded+170j ROM:00005AFA mov.b @SSU_SSSR:16, r0l ROM:00005AFE bld #3, r0l ROM:00005B00 bcc loc_5AFA:8 ROM:00005B02 bset #0, @IO_PDR1:8 ; cs release ROM:00005B06 jsr rtcFactoryTest:24 ; () -> bool success ROM:00005B0A mov.b r0l, r0l ROM:00005B0C bne rtc_test_passes:8 ROM:00005B0E bclr #0, @IO_PDR1:8 ROM:00005B12 ROM:00005B12 loc_5B12: ; CODE XREF: factoryTestPerformIfNeeded+188j ROM:00005B12 mov.b @SSU_SSSR:16, r0l ROM:00005B16 bld #2, r0l ROM:00005B18 bcc loc_5B12:8 ROM:00005B1A mov.b #0xF3, r0l ; '=' ; send F3 to signify RTC fail ROM:00005B1C mov.b r0l, @SSU_SSTDR:16 ROM:00005B20 ROM:00005B20 loc_5B20: ; CODE XREF: factoryTestPerformIfNeeded+196j ROM:00005B20 mov.b @SSU_SSSR:16, r0l ROM:00005B24 bld #3, r0l ROM:00005B26 bcc loc_5B20:8 ROM:00005B28 bset #0, @IO_PDR1:8 ROM:00005B2C ROM:00005B2C loc_5B2C: ; CODE XREF: factoryTestPerformIfNeeded:loc_5B2Cj ROM:00005B2C bra loc_5B2C:8 ROM:00005B2E ; --------------------------------------------------------------------------- ROM:00005B2E ROM:00005B2E rtc_test_passes: ; CODE XREF: factoryTestPerformIfNeeded+17Cj ROM:00005B2E bclr #0, @IO_PDR1:8 ; cs active ROM:00005B32 ROM:00005B32 loc_5B32: ; CODE XREF: factoryTestPerformIfNeeded+1A8j ROM:00005B32 mov.b @SSU_SSSR:16, r0l ROM:00005B36 bld #2, r0l ROM:00005B38 bcc loc_5B32:8 ROM:00005B3A mov.b #2, r0l ; send a 2 ROM:00005B3C mov.b r0l, @SSU_SSTDR:16 ROM:00005B40 ROM:00005B40 loc_5B40: ; CODE XREF: factoryTestPerformIfNeeded+1B6j ROM:00005B40 mov.b @SSU_SSSR:16, r0l ROM:00005B44 bld #3, r0l ROM:00005B46 bcc loc_5B40:8 ROM:00005B48 bset #0, @IO_PDR1:8 ; cs inactive ROM:00005B4C jsr accelFactoryTest:24 ROM:00005B50 bclr #0, @IO_PDR1:8 ROM:00005B54 ROM:00005B54 loc_5B54: ; CODE XREF: factoryTestPerformIfNeeded+1CAj ROM:00005B54 mov.b @SSU_SSSR:16, r0l ROM:00005B58 bld #2, r0l ROM:00005B5A bcc loc_5B54:8 ROM:00005B5C mov.b #1, r0l ; send a one ROM:00005B5E mov.b r0l, @SSU_SSTDR:16 ROM:00005B62 ROM:00005B62 loc_5B62: ; CODE XREF: factoryTestPerformIfNeeded+1D8j ROM:00005B62 mov.b @SSU_SSSR:16, r0l ROM:00005B66 bld #3, r0l ROM:00005B68 bcc loc_5B62:8 ROM:00005B6A bset #0, @IO_PDR1:8 ROM:00005B6E jsr adcFactoryTestAndCalibrate:24 ROM:00005B72 mov.b r0l, r0l ROM:00005B74 bne loc_5B96:8 ROM:00005B76 bclr #0, @IO_PDR1:8 ROM:00005B7A ROM:00005B7A loc_5B7A: ; CODE XREF: factoryTestPerformIfNeeded+1F0j ROM:00005B7A mov.b @SSU_SSSR:16, r0l ROM:00005B7E bld #2, r0l ROM:00005B80 bcc loc_5B7A:8 ROM:00005B82 mov.b #0xF1, r0l ; '±' ROM:00005B84 mov.b r0l, @SSU_SSTDR:16 ROM:00005B88 ROM:00005B88 loc_5B88: ; CODE XREF: factoryTestPerformIfNeeded+1FEj ROM:00005B88 mov.b @SSU_SSSR:16, r0l ROM:00005B8C bld #3, r0l ROM:00005B8E bcc loc_5B88:8 ROM:00005B90 bset #0, @IO_PDR1:8 ROM:00005B94 ROM:00005B94 loc_5B94: ; CODE XREF: factoryTestPerformIfNeeded:loc_5B94j ROM:00005B94 bra loc_5B94:8 ROM:00005B96 ; --------------------------------------------------------------------------- ROM:00005B96 ROM:00005B96 loc_5B96: ; CODE XREF: factoryTestPerformIfNeeded+1E4j ROM:00005B96 bclr #0, @IO_PDR1:8 ROM:00005B9A ROM:00005B9A loc_5B9A: ; CODE XREF: factoryTestPerformIfNeeded+210j ROM:00005B9A mov.b @SSU_SSSR:16, r0l ROM:00005B9E bld #2, r0l ROM:00005BA0 bcc loc_5B9A:8 ROM:00005BA2 sub.b r0l, r0l ; send a zero ROM:00005BA4 mov.b r0l, @SSU_SSTDR:16 ROM:00005BA8 ROM:00005BA8 loc_5BA8: ; CODE XREF: factoryTestPerformIfNeeded+21Ej ROM:00005BA8 mov.b @SSU_SSSR:16, r0l ROM:00005BAC bld #3, r0l ROM:00005BAE bcc loc_5BA8:8 ROM:00005BB0 bset #0, @IO_PDR1:8 ; debug tool deselect ROM:00005BB4 bclr #0, @IO_PDR9:8 ; lcd select ROM:00005BB8 ROM:00005BB8 loc_5BB8: ; CODE XREF: factoryTestPerformIfNeeded+22Ej ROM:00005BB8 mov.b @SSU_SSSR:16, r0l ROM:00005BBC bld #2, r0l ROM:00005BBE bcc loc_5BB8:8 ROM:00005BC0 mov.b #0xA, r0l ; send 0x0A ROM:00005BC2 mov.b r0l, @SSU_SSTDR:16 ROM:00005BC6 ROM:00005BC6 loc_5BC6: ; CODE XREF: factoryTestPerformIfNeeded+23Cj ROM:00005BC6 mov.b @SSU_SSSR:16, r0l ROM:00005BCA bld #2, r0l ROM:00005BCC bcc loc_5BC6:8 ROM:00005BCE mov.b #1, r0l ; send 0x01 ROM:00005BD0 mov.b r0l, @SSU_SSTDR:16 ROM:00005BD4 ROM:00005BD4 loc_5BD4: ; CODE XREF: factoryTestPerformIfNeeded+24Aj ROM:00005BD4 mov.b @SSU_SSSR:16, r0l ROM:00005BD8 bld #3, r0l ROM:00005BDA bcc loc_5BD4:8 ROM:00005BDC bset #0, @IO_PDR9:8 ; lcd deselect ROM:00005BE0 ldc.b #0x80, ccr ; 'Ç' ; ints off again ROM:00005BE2 bclr #6, @CKSTPR1:8 ; clock off SCI3 ROM:00005BE6 bclr #4, @CKSTPR1:8 ; clock off ADC ROM:00005BEA bclr #2, @CKSTPR1:8 ; clock off timer B1 ROM:00005BEE bclr #0, @CKSTPR1:8 ; clock off RTC ROM:00005BF2 sub.b r0l, r0l ; tuen off all clocks in CKSTPR2 ROM:00005BF4 mov.b r0l, @CKSTPR2:8 ROM:00005BF6 mov.b #1, r0l ; port 3 pin 0 high ROM:00005BF8 mov.b r0l, @IO_PDR3:8 ROM:00005BFA sub.b r0h, r0h ROM:00005BFC jsr deviceSleep:24 ROM:00005C00 ROM:00005C00 out_release_cs: ; CODE XREF: factoryTestPerformIfNeeded+82j ROM:00005C00 bset #0, @IO_PDR1:8 ROM:00005C04 ldc.b #0, ccr ROM:00005C06 jmp common_epologue_2:24 ROM:00005C06 ; End of function factoryTestPerformIfNeeded ROM:00005C06 ROM:00005C0A ROM:00005C0A ; =============== S U B R O U T I N E ======================================= ROM:00005C0A ROM:00005C0A ROM:00005C0A pokemonJoinsEmptyWalkerWalk: ; CODE XREF: addRandomGift:loc_5E1Cp ROM:00005C0A push.l er6 ROM:00005C0E mov.w #0xBE, e5 ROM:00005C12 sub.w r0, r0 ROM:00005C14 mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:00005C18 mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:00005C18 ; 0x04 - have walking poke ROM:00005C1C bset #2, @er0 ROM:00005C20 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005C24 mov.w #0x68, e6 ; 'h' ROM:00005C28 mov.w e6, r0 ROM:00005C2A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005C2E mov.w r0, r6 ROM:00005C30 mov.w r0, r1 ROM:00005C32 mov.w e6, e1 ROM:00005C34 mov.l #0x1ED00ED, er0 ROM:00005C3A jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00005C3A ; ROM:00005C3A ; data is stored in two provided locations and read to RAM ROM:00005C3A ; each location includes a checksum right after the data (not inluded in length) ROM:00005C3A ; ROM:00005C3A ; if only one location has checksum-valid data, other is replaced with it ROM:00005C3A ; ROM:00005C3A ; if both appear valid, #0 is assumed dominant ROM:00005C3A ; ROM:00005C3A ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00005C3E mov.b @(0x5B:16,er6), r0l ROM:00005C42 bld #1, r0l ROM:00005C44 bcs loc_5D4C:16 ROM:00005C48 mov.w #0x5B, r0 ; '[' ROM:00005C4C add.w r6, r0 ROM:00005C4E bset #1, @er0 ROM:00005C52 mov.l @er6, er0 ROM:00005C56 mov.l er0, @(4:16,er6) ROM:00005C5C mov.w @(8:16,er6), r0 ROM:00005C60 mov.w r0, @(0xA:16,er6) ROM:00005C64 mov.w #0x5B, r0 ; '[' ROM:00005C68 add.w r6, r0 ROM:00005C6A bset #2, @er0 ; poke joined? ROM:00005C6E mov.l er6, er1 ROM:00005C70 mov.l #0x1ED00ED, er0 ROM:00005C76 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00005C76 ; ROM:00005C76 ; see docs for readRedundantDataFromEeprom for format info ROM:00005C7A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005C7E mov.w #0x180, e6 ROM:00005C82 mov.w e6, r0 ROM:00005C84 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005C88 mov.w r0, r6 ROM:00005C8A mov.w #eepromReadToRamAlso, r5 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005C8E mov.w r0, e0 ROM:00005C90 mov.w #0x9D7E, r0 ROM:00005C94 mov.w e6, r1 ROM:00005C96 jsr @er5 ROM:00005C98 mov.w e6, r1 ROM:00005C9A mov.w #0x91BE, r0 ROM:00005C9E mov.w r6, e0 ROM:00005CA0 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005CA4 mov.w #0x9EFE, r0 ROM:00005CA8 mov.w #0x600, r1 ROM:00005CAC mov.w r6, e0 ROM:00005CAE jsr @er5 ROM:00005CB0 mov.w #0x933E, r0 ROM:00005CB4 mov.w #0x600, r1 ROM:00005CB8 mov.w r6, e0 ROM:00005CBA jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005CBE mov.w #0xA77E, r0 ROM:00005CC2 mov.w #0x140, r1 ROM:00005CC6 mov.w r6, e0 ROM:00005CC8 jsr @er5 ROM:00005CCA mov.w r6, e0 ROM:00005CCC mov.w #0x993E, r0 ROM:00005CD0 mov.w #0x140, r1 ROM:00005CD4 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005CD8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005CDC mov.w e5, r0 ROM:00005CDE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005CE2 mov.w r0, r6 ROM:00005CE4 mov.w r0, e0 ROM:00005CE6 mov.w #0x8F00, r0 ROM:00005CEA mov.w e5, r1 ROM:00005CEC jsr @er5 ROM:00005CEE mov.w #0x72, r0 ; 'r' ROM:00005CF2 add.w r6, r0 ROM:00005CF4 mov.w r6, r1 ROM:00005CF6 mov.w #0x10, r2 ROM:00005CFA jsr memoryCopy:24 ; (r0 = src, r1 = dst, r2 = len) ROM:00005CFE mov.w #0xD, r0 ROM:00005D02 add.w r6, r0 ROM:00005D04 bclr #7, @er0 ROM:00005D08 mov.b #0x46, r0l ; 'F' ROM:00005D0A mov.b r0l, @(0x26:16,er6) ROM:00005D0E sub.w e6, e6 ROM:00005D10 sub.b r1l, r1l ROM:00005D12 ROM:00005D12 loc_5D12: ; CODE XREF: pokemonJoinsEmptyWalkerWalk+118j ROM:00005D12 mov.w #0x10, r0 ROM:00005D16 add.w r6, r0 ROM:00005D18 add.w e6, r0 ROM:00005D1A mov.b r1l, @er0 ROM:00005D1C inc.w #1, e6 ROM:00005D1E cmp.w #0x16, e6 ROM:00005D22 bcs loc_5D12:8 ROM:00005D24 mov.w r6, e0 ROM:00005D26 mov.w #0x8F00, r0 ROM:00005D2A mov.w e5, r1 ROM:00005D2C jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005D30 sub.w r0, r0 ROM:00005D32 mov.w r0, @word_FFF790:16 ROM:00005D36 mov.w #0x18, e1 ROM:00005D3A mov.w #RamCache_totalSteps, r1 ROM:00005D3E mov.l #0x2560156, er0 ROM:00005D44 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00005D44 ; ROM:00005D44 ; see docs for readRedundantDataFromEeprom for format info ROM:00005D48 jsr fill_some_eeprom_structs:24 ROM:00005D4C ROM:00005D4C loc_5D4C: ; CODE XREF: pokemonJoinsEmptyWalkerWalk+3Aj ROM:00005D4C pop.l er6 ROM:00005D50 rts ROM:00005D50 ; End of function pokemonJoinsEmptyWalkerWalk ROM:00005D50 ROM:00005D52 ROM:00005D52 ; =============== S U B R O U T I N E ======================================= ROM:00005D52 ROM:00005D52 ; (r0l = what) // when poke "randomly" find something ROM:00005D52 ROM:00005D52 addRandomGift: ; CODE XREF: interactionHandlerHomeScreen+3Ap ROM:00005D52 ROM:00005D52 var_2 = -2 ROM:00005D52 ROM:00005D52 subs #2, sp ROM:00005D54 mov.b r0l, r6l ROM:00005D56 sub.w e6, e6 ROM:00005D58 mov.b r6l, @gCurSubstateY:16 ; Substate: ROM:00005D58 ; gifted items view: this is item number that has focus and arrow ROM:00005D58 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00005D58 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00005D58 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00005D5C mov.b r6l, r1l ROM:00005D5E extu.w r1 ROM:00005D60 shll.w r1 ; always nonzero, so we really onlyload from index 2+ ROM:00005D62 mov.w @(UNKNOWN_WORDS_BD84,er1), r1 ROM:00005D66 mov.w r1, @gCurSubstateB:16 ; Substate: ROM:00005D66 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005D6A mov.b #0xC, r0l ROM:00005D6C jsr setCurrentlyActiveView:24 ROM:00005D70 sub.w r0, r0 ROM:00005D72 mov.w r0, @word_FFF7A2:16 ROM:00005D76 mov.b r6l, r0l ROM:00005D78 cmp.b #1, r0l ROM:00005D7A beq loc_5D98:8 ROM:00005D7C cmp.b #2, r0l ROM:00005D7E beq add_50_watts:16 ROM:00005D82 cmp.b #3, r0l ROM:00005D84 beq add_20_watts:16 ROM:00005D88 cmp.b #4, r0l ROM:00005D8A beq add_10_watts:16 ROM:00005D8E cmp.b #7, r0l ROM:00005D90 bne loc_5E22:16 ROM:00005D94 jmp loc_5E1C:24 ROM:00005D98 ; --------------------------------------------------------------------------- ROM:00005D98 ROM:00005D98 loc_5D98: ; CODE XREF: addRandomGift+28j ROM:00005D98 mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:00005D9C cmp.w #4500, r0 ROM:00005DA0 bcc loc_5DB8:8 ROM:00005DA2 mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:00005DA6 extu.l er0 ROM:00005DA8 mov.w #500, r1 ROM:00005DAC divxu.w r1, er0 ROM:00005DAE mov.b #9, r0h ROM:00005DB0 sub.b r0l, r0h ROM:00005DB2 mov.b r0h, @gCurSubstateZ:16 ; different per mode ROM:00005DB2 ; battle: ROM:00005DB2 ; 0 - battle opening animation ROM:00005DB2 ; 1 - "XYZ appeared" message ROM:00005DB2 ; 2 - "attack evade catch" directions shown ROM:00005DB2 ; 3 - our action taken. details in gCurSubstateF ROM:00005DB2 ; 4 - poke action taken. details in gCurSubstateF ROM:00005DB2 ; 5 - "was too strong" ROM:00005DB2 ; 6 - we lost ROM:00005DB2 ; 7 - fled ROM:00005DB2 ; 8 - staredown ROM:00005DB2 ; 9 - almost had it ROM:00005DB2 ; 10 - "threw a pokeball" ROM:00005DB2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005DB2 ; 12, 14 - pokeball flying ROM:00005DB2 ; 13 - pokeball flying ROM:00005DB2 ; 15 - catch animation plays ROM:00005DB2 ; 16 - caught! ROM:00005DB2 ; switcht: ROM:00005DB2 ; cur slected poke name ROM:00005DB6 bra loc_5DBE:8 ROM:00005DB8 ; --------------------------------------------------------------------------- ROM:00005DB8 ROM:00005DB8 loc_5DB8: ; CODE XREF: addRandomGift+4Ej ROM:00005DB8 sub.b r0l, r0l ROM:00005DBA mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00005DBA ; battle: ROM:00005DBA ; 0 - battle opening animation ROM:00005DBA ; 1 - "XYZ appeared" message ROM:00005DBA ; 2 - "attack evade catch" directions shown ROM:00005DBA ; 3 - our action taken. details in gCurSubstateF ROM:00005DBA ; 4 - poke action taken. details in gCurSubstateF ROM:00005DBA ; 5 - "was too strong" ROM:00005DBA ; 6 - we lost ROM:00005DBA ; 7 - fled ROM:00005DBA ; 8 - staredown ROM:00005DBA ; 9 - almost had it ROM:00005DBA ; 10 - "threw a pokeball" ROM:00005DBA ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005DBA ; 12, 14 - pokeball flying ROM:00005DBA ; 13 - pokeball flying ROM:00005DBA ; 15 - catch animation plays ROM:00005DBA ; 16 - caught! ROM:00005DBA ; switcht: ROM:00005DBA ; cur slected poke name ROM:00005DBE ROM:00005DBE loc_5DBE: ; CODE XREF: addRandomGift+64j ROM:00005DBE mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00005DBE ; battle: ROM:00005DBE ; 0 - battle opening animation ROM:00005DBE ; 1 - "XYZ appeared" message ROM:00005DBE ; 2 - "attack evade catch" directions shown ROM:00005DBE ; 3 - our action taken. details in gCurSubstateF ROM:00005DBE ; 4 - poke action taken. details in gCurSubstateF ROM:00005DBE ; 5 - "was too strong" ROM:00005DBE ; 6 - we lost ROM:00005DBE ; 7 - fled ROM:00005DBE ; 8 - staredown ROM:00005DBE ; 9 - almost had it ROM:00005DBE ; 10 - "threw a pokeball" ROM:00005DBE ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005DBE ; 12, 14 - pokeball flying ROM:00005DBE ; 13 - pokeball flying ROM:00005DBE ; 15 - catch animation plays ROM:00005DBE ; 16 - caught! ROM:00005DBE ; switcht: ROM:00005DBE ; cur slected poke name ROM:00005DC2 jsr getItemIdForNthItemOnRoute:24 ; (r0l = n) -> r0 ROM:00005DC6 mov.w r0, e6 ROM:00005DC8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005DCC mov.w #0xC, e5 ROM:00005DD0 mov.w e5, r0 ROM:00005DD2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005DD6 mov.w r0, r5 ROM:00005DD8 mov.w r0, e0 ROM:00005DDA mov.w #0xCEBC, r0 ROM:00005DDE mov.w e5, r1 ROM:00005DE0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005DE4 mov.w r5, r0 ROM:00005DE6 jsr findFreeItemSlotIdxInStarndardFoundItemsArray:24 ; (r0 = data* /* 4 bytes per item, 2 are item number, 2 unknown*/) -> freeindex or 3 if none ROM:00005DEA mov.b r0l, r6h ROM:00005DEC cmp.b #3, r0l ROM:00005DEE bcc loc_5E28:8 ROM:00005DF0 extu.w r0 ROM:00005DF2 shll.w r0 ROM:00005DF4 shll.w r0 ROM:00005DF6 add.w r5, r0 ROM:00005DF8 mov.w e6, @er0 ROM:00005DFA mov.w e5, r1 ROM:00005DFC mov.w r5, e0 ROM:00005DFE mov.w #0xCEBC, r0 ROM:00005E02 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00005E06 bra loc_5E28:8 ROM:00005E08 ; --------------------------------------------------------------------------- ROM:00005E08 ROM:00005E08 add_50_watts: ; CODE XREF: addRandomGift+2Cj ROM:00005E08 mov.b #0x32, r0l ; '2' ROM:00005E0A bra loc_5E12:8 ROM:00005E0C ; --------------------------------------------------------------------------- ROM:00005E0C ROM:00005E0C add_20_watts: ; CODE XREF: addRandomGift+32j ROM:00005E0C mov.b #0x14, r0l ROM:00005E0E bra loc_5E12:8 ROM:00005E10 ; --------------------------------------------------------------------------- ROM:00005E10 ROM:00005E10 add_10_watts: ; CODE XREF: addRandomGift+38j ROM:00005E10 mov.b #0xA, r0l ROM:00005E12 ROM:00005E12 loc_5E12: ; CODE XREF: addRandomGift+B8j ROM:00005E12 ; addRandomGift+BCj ROM:00005E12 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00005E12 ; battle: ROM:00005E12 ; 0 - battle opening animation ROM:00005E12 ; 1 - "XYZ appeared" message ROM:00005E12 ; 2 - "attack evade catch" directions shown ROM:00005E12 ; 3 - our action taken. details in gCurSubstateF ROM:00005E12 ; 4 - poke action taken. details in gCurSubstateF ROM:00005E12 ; 5 - "was too strong" ROM:00005E12 ; 6 - we lost ROM:00005E12 ; 7 - fled ROM:00005E12 ; 8 - staredown ROM:00005E12 ; 9 - almost had it ROM:00005E12 ; 10 - "threw a pokeball" ROM:00005E12 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005E12 ; 12, 14 - pokeball flying ROM:00005E12 ; 13 - pokeball flying ROM:00005E12 ; 15 - catch animation plays ROM:00005E12 ; 16 - caught! ROM:00005E12 ; switcht: ROM:00005E12 ; cur slected poke name ROM:00005E16 jsr addWatts:24 ; (r0l = watts) ROM:00005E1A bra loc_5E28:8 ROM:00005E1C ; --------------------------------------------------------------------------- ROM:00005E1C ROM:00005E1C loc_5E1C: ; CODE XREF: addRandomGift+42j ROM:00005E1C jsr pokemonJoinsEmptyWalkerWalk:24 ROM:00005E20 bra loc_5E28:8 ROM:00005E22 ; --------------------------------------------------------------------------- ROM:00005E22 ROM:00005E22 loc_5E22: ; CODE XREF: addRandomGift+3Ej ROM:00005E22 sub.b r0l, r0l ROM:00005E24 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00005E24 ; battle: ROM:00005E24 ; 0 - battle opening animation ROM:00005E24 ; 1 - "XYZ appeared" message ROM:00005E24 ; 2 - "attack evade catch" directions shown ROM:00005E24 ; 3 - our action taken. details in gCurSubstateF ROM:00005E24 ; 4 - poke action taken. details in gCurSubstateF ROM:00005E24 ; 5 - "was too strong" ROM:00005E24 ; 6 - we lost ROM:00005E24 ; 7 - fled ROM:00005E24 ; 8 - staredown ROM:00005E24 ; 9 - almost had it ROM:00005E24 ; 10 - "threw a pokeball" ROM:00005E24 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005E24 ; 12, 14 - pokeball flying ROM:00005E24 ; 13 - pokeball flying ROM:00005E24 ; 15 - catch animation plays ROM:00005E24 ; 16 - caught! ROM:00005E24 ; switcht: ROM:00005E24 ; cur slected poke name ROM:00005E28 ROM:00005E28 loc_5E28: ; CODE XREF: addRandomGift+9Cj ROM:00005E28 ; addRandomGift+B4j ... ROM:00005E28 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005E2C mov.w #0xBE, r0 ; '+' ROM:00005E30 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005E34 mov.w r0, r5 ROM:00005E36 mov.w r0, e0 ROM:00005E38 mov.w #0xBE, r1 ; '+' ROM:00005E3C mov.w #0x8F00, r0 ROM:00005E40 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00005E44 sub.b r0l, r0l ROM:00005E46 push.w r0 ROM:00005E48 sub.b r1h, r1h ROM:00005E4A mov.b @RamCache_settingsByte:16, r0l ROM:00005E4E bld #0, r0l ROM:00005E50 bst #0, r1h ROM:00005E52 mov.w #0x88, r0 ; 'ê' ROM:00005E56 mov.w r1, @(4+var_2:16,sp) ROM:00005E5A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005E5E mov.w r0, e0 ROM:00005E60 mov.w e6, e1 ROM:00005E62 mov.b r6l, r1l ROM:00005E64 add.b #0x10, r1l ROM:00005E66 mov.w r5, r0 ROM:00005E68 mov.b @(4+var_2:16,sp), r1h ROM:00005E6C jsr logEvent:24 ; ( ROM:00005E6C ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00005E6C ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00005E6C ; r1l = eventTYpe ROM:00005E6C ; r1h = boolean isOnSpecialEventRoute ROM:00005E6C ; e1 = extraInfo (eg: item type) ROM:00005E6C ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00005E6C ; ) ROM:00005E70 adds #2, sp ROM:00005E72 mov.b r6l, r0l ROM:00005E74 cmp.b #2, r0l ROM:00005E76 bcs loc_5E94:8 ROM:00005E78 cmp.b #5, r0l ROM:00005E7A bhi loc_5E94:8 ROM:00005E7C jsr rand:24 ROM:00005E80 shlr.l er0 ROM:00005E82 shlr.l er0 ROM:00005E84 shlr.l er0 ROM:00005E86 sub.l er1, er1 ROM:00005E88 mov.b #3, r1l ROM:00005E8A jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00005E8E mov.b r1l, @gCurSubstateA:16 ; Substate for various modes ROM:00005E8E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00005E8E ; ItemScreenHandler: ROM:00005E8E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00005E8E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00005E8E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00005E8E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00005E8E ; 0x0010 - light grey pokeball ROM:00005E8E ; 0x0020 - tiny map icon ROM:00005E8E ; 0x0040 - found item #0 (slot nonempty) ROM:00005E8E ; 0x0080 - found item #1 (slot nonempty) ROM:00005E8E ; 0x0100 - found item #2 (slot nonempty) ROM:00005E8E ; 0x0200 - grey item icon ROM:00005E8E ; ItemRXed - what was RXed ROM:00005E8E ; 0 - event pokemon ROM:00005E8E ; 1 - special route ROM:00005E8E ; 2 - item ROM:00005E8E ; 3 - special ROM:00005E8E ; 4 - stamp: heart ROM:00005E8E ; 5 - stamp: spade ROM:00005E8E ; 6 - stamp: diamond ROM:00005E8E ; 7 - stamp: club ROM:00005E8E ; switch: ROM:00005E8E ; zero - pokemon does ROM:00005E8E ; nonzero - item needs to be switched ROM:00005E8E ; item RXed: ROM:00005E8E ; what sort of thing was RXed: item, map, route, etc ROM:00005E92 bra loc_5E9A:8 ROM:00005E94 ; --------------------------------------------------------------------------- ROM:00005E94 ROM:00005E94 loc_5E94: ; CODE XREF: addRandomGift+124j ROM:00005E94 ; addRandomGift+128j ROM:00005E94 sub.b r0l, r0l ROM:00005E96 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00005E96 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00005E96 ; ItemScreenHandler: ROM:00005E96 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00005E96 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00005E96 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00005E96 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00005E96 ; 0x0010 - light grey pokeball ROM:00005E96 ; 0x0020 - tiny map icon ROM:00005E96 ; 0x0040 - found item #0 (slot nonempty) ROM:00005E96 ; 0x0080 - found item #1 (slot nonempty) ROM:00005E96 ; 0x0100 - found item #2 (slot nonempty) ROM:00005E96 ; 0x0200 - grey item icon ROM:00005E96 ; ItemRXed - what was RXed ROM:00005E96 ; 0 - event pokemon ROM:00005E96 ; 1 - special route ROM:00005E96 ; 2 - item ROM:00005E96 ; 3 - special ROM:00005E96 ; 4 - stamp: heart ROM:00005E96 ; 5 - stamp: spade ROM:00005E96 ; 6 - stamp: diamond ROM:00005E96 ; 7 - stamp: club ROM:00005E96 ; switch: ROM:00005E96 ; zero - pokemon does ROM:00005E96 ; nonzero - item needs to be switched ROM:00005E96 ; item RXed: ROM:00005E96 ; what sort of thing was RXed: item, map, route, etc ROM:00005E9A ROM:00005E9A loc_5E9A: ; CODE XREF: addRandomGift+140j ROM:00005E9A adds #2, sp ROM:00005E9C rts ROM:00005E9C ; End of function addRandomGift ROM:00005E9C ROM:00005E9E ROM:00005E9E ; =============== S U B R O U T I N E ======================================= ROM:00005E9E ROM:00005E9E ROM:00005E9E interactionHandlerRandomGiftFromBoredPokemon: ROM:00005E9E ; CODE XREF: interactionHandler:case_0x0cp ROM:00005E9E mov.b #2, r0l ROM:00005EA0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00005EA0 ; // 0x02 - enter ROM:00005EA0 ; // 0x04 - left ROM:00005EA0 ; // 0x08 - right ROM:00005EA4 mov.b r0l, r0l ROM:00005EA6 beq locret_5EDA:8 ROM:00005EA8 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005EA8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005EAC bld #0, @er0 ROM:00005EB0 bcc loc_5EBE:8 ROM:00005EB2 jsr someStateVarShuffling:24 ROM:00005EB6 sub.b r0l, r0l ROM:00005EB8 jsr setCurrentlyActiveView:24 ROM:00005EBC bra locret_5EDA:8 ROM:00005EBE ; --------------------------------------------------------------------------- ROM:00005EBE ROM:00005EBE loc_5EBE: ; CODE XREF: interactionHandlerRandomGiftFromBoredPokemon+12j ROM:00005EBE add.w #4, r0 ROM:00005EC2 mov.w r0, @gCurSubstateB:16 ; Substate: ROM:00005EC2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005EC6 mov.b @(1:16,er0), r0l ROM:00005ECA cmp.b #0x10, r0l ROM:00005ECC beq locret_5EDA:8 ROM:00005ECE mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005ECE ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005ED2 mov.b @(1:16,er0), r0l ROM:00005ED6 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00005EDA ROM:00005EDA locret_5EDA: ; CODE XREF: interactionHandlerRandomGiftFromBoredPokemon+8j ROM:00005EDA ; interactionHandlerRandomGiftFromBoredPokemon+1Ej ... ROM:00005EDA rts ROM:00005EDA ; End of function interactionHandlerRandomGiftFromBoredPokemon ROM:00005EDA ROM:00005EDC ROM:00005EDC ; =============== S U B R O U T I N E ======================================= ROM:00005EDC ROM:00005EDC ROM:00005EDC showPokemonFeelingsAndRandomFindings: ; CODE XREF: maybe_viewDoDisplay:case__0x0cp ROM:00005EDC jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00005EE0 mov.w #0xC0, r0 ; '+' ROM:00005EE4 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00005EE8 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005EE8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005EEC bld #1, @er0 ROM:00005EF0 bcc loc_5EFA:8 ROM:00005EF2 mov.w #0x420, r0 ROM:00005EF6 jsr drawCurPokemonSmallAnimatedFrame:24 ; (r0l = x, r0h = y) ROM:00005EFA ROM:00005EFA loc_5EFA: ; CODE XREF: showPokemonFeelingsAndRandomFindings+14j ROM:00005EFA mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005EFA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005EFE mov.b @er0, r1l ROM:00005F00 and.b #0xE0, r1l ROM:00005F02 cmp.b #0xE0, r1l ; 'a' ROM:00005F04 beq loc_5F14:8 ROM:00005F06 mov.b @er0, r0l ROM:00005F08 rotl.b r0l ROM:00005F0A rotl.b r0l ROM:00005F0C rotl.b r0l ROM:00005F0E and.b #7, r0l ROM:00005F10 jsr drawPokemonFeelingBubble:24 ; (r0l = whichFeeling) ROM:00005F14 ROM:00005F14 loc_5F14: ; CODE XREF: showPokemonFeelingsAndRandomFindings+28j ROM:00005F14 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005F14 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005F18 bld #2, @er0 ROM:00005F1C bcc loc_5F26:8 ROM:00005F1E mov.b #0x14, r0h ROM:00005F20 mov.b r0h, r0l ROM:00005F22 jsr drawItemSymbolOnScreen:24 ; (r0l = x, r0h = y) ROM:00005F26 ROM:00005F26 loc_5F26: ; CODE XREF: showPokemonFeelingsAndRandomFindings+40j ROM:00005F26 mov.b @gCurSubstateZ:16, r6l ; different per mode ROM:00005F26 ; battle: ROM:00005F26 ; 0 - battle opening animation ROM:00005F26 ; 1 - "XYZ appeared" message ROM:00005F26 ; 2 - "attack evade catch" directions shown ROM:00005F26 ; 3 - our action taken. details in gCurSubstateF ROM:00005F26 ; 4 - poke action taken. details in gCurSubstateF ROM:00005F26 ; 5 - "was too strong" ROM:00005F26 ; 6 - we lost ROM:00005F26 ; 7 - fled ROM:00005F26 ; 8 - staredown ROM:00005F26 ; 9 - almost had it ROM:00005F26 ; 10 - "threw a pokeball" ROM:00005F26 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005F26 ; 12, 14 - pokeball flying ROM:00005F26 ; 13 - pokeball flying ROM:00005F26 ; 15 - catch animation plays ROM:00005F26 ; 16 - caught! ROM:00005F26 ; switcht: ROM:00005F26 ; cur slected poke name ROM:00005F2A mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005F2A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005F2E mov.b @(2:16,er0), r1l ROM:00005F32 cmp.b #0xFC, r1l ; 'n' ROM:00005F34 beq loc_5F44:8 ROM:00005F36 cmp.b #0xFD, r1l ; '²' ROM:00005F38 beq loc_5F50:8 ROM:00005F3A cmp.b #0xFE, r1l ; '¦' ROM:00005F3C beq loc_5F5E:8 ROM:00005F3E cmp.b #0xFF, r1l ROM:00005F40 beq loc_5F7A:8 ROM:00005F42 bra loc_5F6E:8 ; this code path makes no sense if we ever get here... ROM:00005F44 ; --------------------------------------------------------------------------- ROM:00005F44 ROM:00005F44 loc_5F44: ; CODE XREF: showPokemonFeelingsAndRandomFindings+58j ROM:00005F44 mov.b #5, r1l ROM:00005F46 mov.w #0x2000, r0 ROM:00005F4A jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:00005F4E bra loc_5F7A:8 ROM:00005F50 ; --------------------------------------------------------------------------- ROM:00005F50 ROM:00005F50 loc_5F50: ; CODE XREF: showPokemonFeelingsAndRandomFindings+5Cj ROM:00005F50 mov.b r6l, r1l ROM:00005F52 mov.b #0xD, r1h ROM:00005F54 mov.w #0x2000, r0 ROM:00005F58 jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00005F5C bra loc_5F7A:8 ROM:00005F5E ; --------------------------------------------------------------------------- ROM:00005F5E ROM:00005F5E loc_5F5E: ; CODE XREF: showPokemonFeelingsAndRandomFindings+60j ROM:00005F5E extu.w r6 ROM:00005F60 mov.w r6, e0 ROM:00005F62 mov.b #0xD, r1l ROM:00005F64 mov.w #0x2002, r0 ROM:00005F68 jsr drawNumberAndWattsymbolOnscreen:24 ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:00005F6C bra loc_5F7A:8 ROM:00005F6E ; --------------------------------------------------------------------------- ROM:00005F6E ROM:00005F6E loc_5F6E: ; CODE XREF: showPokemonFeelingsAndRandomFindings+66j ROM:00005F6E mov.b r1l, r0h ; this code path makes no sense if we ever get here... ROM:00005F70 mov.w #0xD, r1 ROM:00005F74 mov.b #0x20, r0l ; ' ' ROM:00005F76 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00005F76 ; ROM:00005F76 ; //always drawn at x = 0 ROM:00005F76 ; ROM:00005F7A ROM:00005F7A loc_5F7A: ; CODE XREF: showPokemonFeelingsAndRandomFindings+64j ROM:00005F7A ; showPokemonFeelingsAndRandomFindings+72j ... ROM:00005F7A mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005F7A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005F7E mov.b @er0, r1l ROM:00005F80 and.b #0x18, r1l ROM:00005F82 cmp.b #8, r1l ROM:00005F84 bls loc_5F92:8 ROM:00005F86 mov.b @(3:16,er0), r0h ROM:00005F8A mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00005F8A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00005F8A ; ItemScreenHandler: ROM:00005F8A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00005F8A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00005F8A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00005F8A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00005F8A ; 0x0010 - light grey pokeball ROM:00005F8A ; 0x0020 - tiny map icon ROM:00005F8A ; 0x0040 - found item #0 (slot nonempty) ROM:00005F8A ; 0x0080 - found item #1 (slot nonempty) ROM:00005F8A ; 0x0100 - found item #2 (slot nonempty) ROM:00005F8A ; 0x0200 - grey item icon ROM:00005F8A ; ItemRXed - what was RXed ROM:00005F8A ; 0 - event pokemon ROM:00005F8A ; 1 - special route ROM:00005F8A ; 2 - item ROM:00005F8A ; 3 - special ROM:00005F8A ; 4 - stamp: heart ROM:00005F8A ; 5 - stamp: spade ROM:00005F8A ; 6 - stamp: diamond ROM:00005F8A ; 7 - stamp: club ROM:00005F8A ; switch: ROM:00005F8A ; zero - pokemon does ROM:00005F8A ; nonzero - item needs to be switched ROM:00005F8A ; item RXed: ROM:00005F8A ; what sort of thing was RXed: item, map, route, etc ROM:00005F8E add.b r0l, r0h ROM:00005F90 bra loc_5FB0:8 ROM:00005F92 ; --------------------------------------------------------------------------- ROM:00005F92 ROM:00005F92 loc_5F92: ; CODE XREF: showPokemonFeelingsAndRandomFindings+A8j ROM:00005F92 mov.b @(2:16,er0), r0l ROM:00005F96 cmp.b #0xFF, r0l ROM:00005F98 bne loc_5FA8:8 ROM:00005F9A mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005F9A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005F9E mov.b @(3:16,er0), r0h ROM:00005FA2 mov.w #0x10F, r1 ROM:00005FA6 bra loc_5FB4:8 ROM:00005FA8 ; --------------------------------------------------------------------------- ROM:00005FA8 ROM:00005FA8 loc_5FA8: ; CODE XREF: showPokemonFeelingsAndRandomFindings+BCj ROM:00005FA8 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00005FA8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00005FAC mov.b @(3:16,er0), r0h ROM:00005FB0 ROM:00005FB0 loc_5FB0: ; CODE XREF: showPokemonFeelingsAndRandomFindings+B4j ROM:00005FB0 mov.w #0x10E, r1 ROM:00005FB4 ROM:00005FB4 loc_5FB4: ; CODE XREF: showPokemonFeelingsAndRandomFindings+CAj ROM:00005FB4 mov.b #0x30, r0l ; '0' ROM:00005FB6 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00005FB6 ; ROM:00005FB6 ; //always drawn at x = 0 ROM:00005FB6 ; ROM:00005FBA sub.w r0, r0 ROM:00005FBC jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00005FC0 rts ROM:00005FC0 ; End of function showPokemonFeelingsAndRandomFindings ROM:00005FC0 ROM:00005FC2 ROM:00005FC2 ; =============== S U B R O U T I N E ======================================= ROM:00005FC2 ROM:00005FC2 ROM:00005FC2 maybefindRandomItem_NOT_SURE: ; CODE XREF: sleepModeEventLoop+50p ROM:00005FC2 push.w r2 ROM:00005FC4 push.w r5 ROM:00005FC6 push.w r6 ROM:00005FC8 subs #2, sp ROM:00005FCA mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00005FCA ; 0x04 - have walking poke ROM:00005FCE and.b #0x18, r0l ROM:00005FD0 cmp.b #0x10, r0l ROM:00005FD2 bne loc_60D4:16 ROM:00005FD6 mov.b @currentlyActiveView:16, r0l ROM:00005FDA bne loc_60D4:16 ROM:00005FDE mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00005FDE ; 0x04 - have walking poke ROM:00005FE2 bld #0, r0l ROM:00005FE4 bcc loc_60D4:16 ROM:00005FE8 mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:00005FE8 ; 0x04 - have walking poke ROM:00005FEC bclr #0, @er0 ROM:00005FF0 sub.b r0l, r0l ROM:00005FF2 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00005FF2 ; gifted items view: this is item number that has focus and arrow ROM:00005FF2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00005FF2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00005FF2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00005FF6 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00005FF6 ; battle: ROM:00005FF6 ; 0 - battle opening animation ROM:00005FF6 ; 1 - "XYZ appeared" message ROM:00005FF6 ; 2 - "attack evade catch" directions shown ROM:00005FF6 ; 3 - our action taken. details in gCurSubstateF ROM:00005FF6 ; 4 - poke action taken. details in gCurSubstateF ROM:00005FF6 ; 5 - "was too strong" ROM:00005FF6 ; 6 - we lost ROM:00005FF6 ; 7 - fled ROM:00005FF6 ; 8 - staredown ROM:00005FF6 ; 9 - almost had it ROM:00005FF6 ; 10 - "threw a pokeball" ROM:00005FF6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00005FF6 ; 12, 14 - pokeball flying ROM:00005FF6 ; 13 - pokeball flying ROM:00005FF6 ; 15 - catch animation plays ROM:00005FF6 ; 16 - caught! ROM:00005FF6 ; switcht: ROM:00005FF6 ; cur slected poke name ROM:00005FFA mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:00005FFE mov.w r0, @sp ROM:00006000 jsr rand:24 ROM:00006004 sub.l er1, er1 ROM:00006006 mov.b #0x64, r1l ; 'd' ROM:00006008 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000600C cmp.b #0x28, r1l ; '(' ROM:0000600E bcc loc_60D4:16 ROM:00006012 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00006012 ; 0x04 - have walking poke ROM:00006016 bld #2, r0l ROM:00006018 bcs loc_602C:8 ROM:0000601A mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:0000601E cmp.w #300, r0 ROM:00006022 bcs loc_60D4:16 ROM:00006026 mov.b #7, r0l ROM:00006028 jmp loc_60CA:24 ROM:0000602C ; --------------------------------------------------------------------------- ROM:0000602C ROM:0000602C loc_602C: ; CODE XREF: maybefindRandomItem_NOT_SURE+56j ROM:0000602C mov.w @word_FFF7A2:16, r0 ROM:00006030 cmp.w #3600, r0 ROM:00006034 bcs loc_60D4:16 ROM:00006038 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000603C mov.w #0xBE, r0 ; '+' ROM:00006040 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006044 mov.w r0, r6 ROM:00006046 mov.w r0, e0 ROM:00006048 mov.w #0xBE, r1 ; '+' ROM:0000604C mov.w #0x8F00, r0 ROM:00006050 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006054 mov.b @(0x26:16,er6), r5l ; last char in route name... weird thing ot read ROM:00006058 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000605C mov.w #0xC, r0 ROM:00006060 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006064 mov.w r0, r6 ROM:00006066 mov.w r0, e0 ROM:00006068 mov.w #0xCEBC, r0 ROM:0000606C mov.w #0xC, r1 ROM:00006070 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006074 mov.w r6, r0 ROM:00006076 jsr findFreeItemSlotIdxInStarndardFoundItemsArray:24 ; (r0 = data* /* 4 bytes per item, 2 are item number, 2 unknown*/) -> freeindex or 3 if none ROM:0000607A cmp.b #3, r0l ROM:0000607C bcc loc_608E:8 ROM:0000607E cmp.b #90, r5l ROM:00006080 bcs loc_608E:8 ROM:00006082 mov.w @sp, r0 ROM:00006084 cmp.w #500, r0 ROM:00006088 bcs loc_608E:8 ROM:0000608A mov.b #1, r0l ROM:0000608C bra loc_60CA:8 ROM:0000608E ; --------------------------------------------------------------------------- ROM:0000608E ROM:0000608E loc_608E: ; CODE XREF: maybefindRandomItem_NOT_SURE+BAj ROM:0000608E ; maybefindRandomItem_NOT_SURE+BEj ... ROM:0000608E cmp.b #80, r5l ROM:00006090 bcs loc_609E:8 ROM:00006092 mov.w @sp, r0 ROM:00006094 cmp.w #250, r0 ROM:00006098 bcs loc_609E:8 ROM:0000609A mov.b #2, r0l ROM:0000609C bra loc_60CA:8 ROM:0000609E ; --------------------------------------------------------------------------- ROM:0000609E ROM:0000609E loc_609E: ; CODE XREF: maybefindRandomItem_NOT_SURE+CEj ROM:0000609E ; maybefindRandomItem_NOT_SURE+D6j ROM:0000609E mov.w @sp, r0 ROM:000060A0 cmp.w #0xC8, r0 ; '+' ROM:000060A4 bcs loc_60AA:8 ROM:000060A6 mov.b #3, r0l ROM:000060A8 bra loc_60CA:8 ROM:000060AA ; --------------------------------------------------------------------------- ROM:000060AA ROM:000060AA loc_60AA: ; CODE XREF: maybefindRandomItem_NOT_SURE+E2j ROM:000060AA mov.w @sp, r0 ROM:000060AC cmp.w #0x64, r0 ; 'd' ROM:000060B0 bcs loc_60B6:8 ROM:000060B2 mov.b #4, r0l ROM:000060B4 bra loc_60CA:8 ROM:000060B6 ; --------------------------------------------------------------------------- ROM:000060B6 ROM:000060B6 loc_60B6: ; CODE XREF: maybefindRandomItem_NOT_SURE+EEj ROM:000060B6 mov.w @word_FFF790:16, r0 ROM:000060BA cmp.w #0x3C, r0 ; '<' ROM:000060BE bcs loc_60D4:8 ROM:000060C0 mov.w @sp, r0 ROM:000060C2 cmp.w #0x32, r0 ; '2' ROM:000060C6 bhi loc_60D4:8 ROM:000060C8 mov.b #5, r0l ROM:000060CA ROM:000060CA loc_60CA: ; CODE XREF: maybefindRandomItem_NOT_SURE+66j ROM:000060CA ; maybefindRandomItem_NOT_SURE+CAj ... ROM:000060CA mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000060CA ; gifted items view: this is item number that has focus and arrow ROM:000060CA ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000060CA ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000060CA ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000060CE mov.b #0x30, r0l ; '0' ROM:000060D0 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:000060D0 ; battle: ROM:000060D0 ; 0 - battle opening animation ROM:000060D0 ; 1 - "XYZ appeared" message ROM:000060D0 ; 2 - "attack evade catch" directions shown ROM:000060D0 ; 3 - our action taken. details in gCurSubstateF ROM:000060D0 ; 4 - poke action taken. details in gCurSubstateF ROM:000060D0 ; 5 - "was too strong" ROM:000060D0 ; 6 - we lost ROM:000060D0 ; 7 - fled ROM:000060D0 ; 8 - staredown ROM:000060D0 ; 9 - almost had it ROM:000060D0 ; 10 - "threw a pokeball" ROM:000060D0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000060D0 ; 12, 14 - pokeball flying ROM:000060D0 ; 13 - pokeball flying ROM:000060D0 ; 15 - catch animation plays ROM:000060D0 ; 16 - caught! ROM:000060D0 ; switcht: ROM:000060D0 ; cur slected poke name ROM:000060D4 ROM:000060D4 loc_60D4: ; CODE XREF: maybefindRandomItem_NOT_SURE+10j ROM:000060D4 ; maybefindRandomItem_NOT_SURE+18j ... ROM:000060D4 adds #2, sp ROM:000060D6 jmp epilogue_common_pop_r6_r5_r2:24 ROM:000060D6 ; End of function maybefindRandomItem_NOT_SURE ROM:000060D6 ROM:000060DA ROM:000060DA ; =============== S U B R O U T I N E ======================================= ROM:000060DA ROM:000060DA ; (r0 = dataPtr) // dat afo rone axi (x y or z) ROM:000060DA ROM:000060DA processAcceleromerSamplesAxis: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+36p ROM:000060DA ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+3Ep ... ROM:000060DA ROM:000060DA var_F = -0xF ROM:000060DA var_A = -0xA ROM:000060DA var_8 = -8 ROM:000060DA var_3 = -3 ROM:000060DA ROM:000060DA sub.w #0x10, r7 ROM:000060DE mov.w r0, r6 ROM:000060E0 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000060E4 mov.w #0x80, r0 ; 'Ç' ROM:000060E8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000060EC mov.w r0, r5 ROM:000060EE mov.w #0x80, r0 ; 'Ç' ROM:000060F2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000060F6 mov.w r0, r4 ROM:000060F8 sub.b r0l, r0l ROM:000060FA mov.b r0l, r2l ROM:000060FC mov.w r5, r3 ROM:000060FE ROM:000060FE loc_60FE: ; CODE XREF: processAcceleromerSamplesAxis+40j ROM:000060FE mov.b @er6, r0l ROM:00006100 exts.w r0 ROM:00006102 mov.w r0, @er3 ROM:00006104 inc.b r2l ROM:00006106 inc.w #1, r6 ROM:00006108 inc.w #2, r3 ROM:0000610A mov.b @er6, r0l ROM:0000610C exts.w r0 ROM:0000610E mov.w r0, @er3 ROM:00006110 inc.b r2l ROM:00006112 inc.w #1, r6 ROM:00006114 inc.w #2, r3 ROM:00006116 mov.b r2l, r0l ROM:00006118 cmp.b #0x40, r0l ; '@' ROM:0000611A bcs loc_60FE:8 ROM:0000611C sub.b r6l, r6l ROM:0000611E sub.w e0, e0 ROM:00006120 ROM:00006120 loc_6120: ; CODE XREF: processAcceleromerSamplesAxis+60j ROM:00006120 mov.b r6l, r0l ROM:00006122 extu.w r0 ROM:00006124 shll.w r0 ROM:00006126 add.w r4, r0 ROM:00006128 mov.w e0, @er0 ROM:0000612A inc.b r6l ROM:0000612C mov.b r6l, r1l ROM:0000612E extu.w r1 ROM:00006130 shll.w r1 ROM:00006132 add.w r4, r1 ROM:00006134 mov.w e0, @er1 ROM:00006136 inc.b r6l ROM:00006138 cmp.b #0x40, r6l ; '@' ROM:0000613A bcs loc_6120:8 ROM:0000613C mov.w #1, r3 ROM:00006140 ROM:00006140 loc_6140: ; CODE XREF: processAcceleromerSamplesAxis+AAj ROM:00006140 mov.b #0x20, r6l ; ' ' ROM:00006142 bra loc_6146:8 ROM:00006144 ; --------------------------------------------------------------------------- ROM:00006144 ROM:00006144 loc_6144: ; CODE XREF: processAcceleromerSamplesAxis+70j ROM:00006144 shlr.b r6l ROM:00006146 ROM:00006146 loc_6146: ; CODE XREF: processAcceleromerSamplesAxis+68j ROM:00006146 xor.b r6l, r3h ROM:00006148 cmp.b r3h, r6l ROM:0000614A bhi loc_6144:8 ROM:0000614C cmp.b r3h, r3l ROM:0000614E bcc loc_6180:8 ROM:00006150 mov.b r3h, r0l ROM:00006152 extu.w r0 ROM:00006154 shll.w r0 ROM:00006156 add.w r5, r0 ROM:00006158 mov.w r0, r6 ROM:0000615A mov.b r3l, r1l ROM:0000615C extu.w r1 ROM:0000615E shll.w r1 ROM:00006160 add.w r5, r1 ROM:00006162 mov.w r1, e6 ROM:00006164 mov.w @er1, r1 ROM:00006166 mov.w @er0, e0 ROM:00006168 xor.w r1, e0 ROM:0000616A mov.w e0, @er0 ROM:0000616C mov.w e6, r1 ROM:0000616E mov.w @er0, r0 ROM:00006170 mov.w @er1, e0 ROM:00006172 xor.w r0, e0 ROM:00006174 mov.w e0, @er1 ROM:00006176 mov.w e6, r0 ROM:00006178 mov.w @er0, r0 ROM:0000617A mov.w @er6, e0 ROM:0000617C xor.w r0, e0 ROM:0000617E mov.w e0, @er6 ROM:00006180 ROM:00006180 loc_6180: ; CODE XREF: processAcceleromerSamplesAxis+74j ROM:00006180 inc.b r3l ROM:00006182 cmp.b #0x3F, r3l ; '?' ROM:00006184 bcs loc_6140:8 ROM:00006186 mov.b #0x40, r0l ; '@' ROM:00006188 mov.b r0l, @(0x10+var_F:16,sp) ROM:0000618C mov.b #1, r2h ROM:0000618E jmp loc_62BC:24 ROM:00006192 ; --------------------------------------------------------------------------- ROM:00006192 ROM:00006192 loc_6192: ; CODE XREF: processAcceleromerSamplesAxis+1ECj ROM:00006192 mov.b @(0x10+var_F:16,sp), r0l ROM:00006196 shlr.b r0l ROM:00006198 mov.b r0l, @(0x10+var_F:16,sp) ROM:0000619C sub.b r3h, r3h ROM:0000619E mov.b r3h, r2l ROM:000061A0 jmp loc_62B0:24 ROM:000061A4 ; --------------------------------------------------------------------------- ROM:000061A4 ROM:000061A4 loc_61A4: ; CODE XREF: processAcceleromerSamplesAxis+1DAj ROM:000061A4 mov.b r2l, r0l ROM:000061A6 extu.w r0 ROM:000061A8 mov.w r0, r6 ROM:000061AA add.w #0x10, r0 ROM:000061AE shll.w r0 ROM:000061B0 mov.w @(POKEBALL_THROW_ARC_Y,er0), e4 ROM:000061B4 shll.w r6 ROM:000061B6 mov.w @(POKEBALL_THROW_ARC_Y,er6), e3 ROM:000061BA mov.b r3h, r3l ROM:000061BC jmp loc_629E:24 ROM:000061C0 ; --------------------------------------------------------------------------- ROM:000061C0 ROM:000061C0 loc_61C0: ; CODE XREF: processAcceleromerSamplesAxis+1C6j ROM:000061C0 mov.b r2h, r0l ROM:000061C2 add.b r3l, r0l ROM:000061C4 extu.w r0 ROM:000061C6 shll.w r0 ROM:000061C8 mov.w r0, r6 ROM:000061CA mov.b r2l, r0l ROM:000061CC bne loc_61D8:8 ROM:000061CE mov.w r5, r0 ROM:000061D0 add.w r6, r0 ROM:000061D2 mov.w @er0, e6 ROM:000061D4 mov.w r4, r0 ROM:000061D6 bra loc_61E8:8 ROM:000061D8 ; --------------------------------------------------------------------------- ROM:000061D8 ROM:000061D8 loc_61D8: ; CODE XREF: processAcceleromerSamplesAxis+F2j ROM:000061D8 cmp.b #0x10, r0l ROM:000061DA bne loc_61EE:8 ROM:000061DC mov.w r4, r0 ROM:000061DE add.w r6, r0 ROM:000061E0 mov.w @er0, r0 ROM:000061E2 neg.w r0 ROM:000061E4 mov.w r0, e6 ROM:000061E6 mov.w r5, r0 ROM:000061E8 ROM:000061E8 loc_61E8: ; CODE XREF: processAcceleromerSamplesAxis+FCj ROM:000061E8 add.w r6, r0 ROM:000061EA mov.w @er0, e5 ROM:000061EC bra loc_625A:8 ROM:000061EE ; --------------------------------------------------------------------------- ROM:000061EE ROM:000061EE loc_61EE: ; CODE XREF: processAcceleromerSamplesAxis+100j ROM:000061EE mov.w r4, r0 ROM:000061F0 add.w r6, r0 ROM:000061F2 mov.w @er0, e0 ROM:000061F4 bne loc_6216:8 ROM:000061F6 mov.w r5, r0 ROM:000061F8 add.w r6, r0 ROM:000061FA mov.w @er0, r0 ROM:000061FC mov.w r0, e2 ROM:000061FE mulxs.w e4, er0 ROM:00006202 shll.l er0 ROM:00006204 shll.l er0 ROM:00006206 shll.l er0 ROM:00006208 shll.l er0 ROM:0000620A shll.l er0 ROM:0000620C mov.w e0, e6 ROM:0000620E mov.w e2, r0 ROM:00006210 mulxs.w e3, er0 ROM:00006214 bra loc_624E:8 ROM:00006216 ; --------------------------------------------------------------------------- ROM:00006216 ROM:00006216 loc_6216: ; CODE XREF: processAcceleromerSamplesAxis+11Aj ROM:00006216 mov.w r5, r0 ROM:00006218 add.w r6, r0 ROM:0000621A mov.w @er0, r0 ROM:0000621C mov.w r0, e2 ROM:0000621E mulxs.w e4, er0 ROM:00006222 mov.w r4, r1 ROM:00006224 add.w r6, r1 ROM:00006226 mov.w @er1, r1 ROM:00006228 mov.w r1, @(0x10+var_8:16,sp) ROM:0000622C mulxs.w e3, er1 ROM:00006230 sub.l er1, er0 ROM:00006232 shll.l er0 ROM:00006234 shll.l er0 ROM:00006236 shll.l er0 ROM:00006238 shll.l er0 ROM:0000623A shll.l er0 ROM:0000623C mov.w e0, e6 ROM:0000623E mov.w @(0x10+var_8:16,sp), r0 ROM:00006242 mulxs.w e4, er0 ROM:00006246 mov.w e2, r1 ROM:00006248 mulxs.w e3, er1 ROM:0000624C add.l er1, er0 ROM:0000624E ROM:0000624E loc_624E: ; CODE XREF: processAcceleromerSamplesAxis+13Aj ROM:0000624E shll.l er0 ROM:00006250 shll.l er0 ROM:00006252 shll.l er0 ROM:00006254 shll.l er0 ROM:00006256 shll.l er0 ROM:00006258 mov.w e0, e5 ROM:0000625A ROM:0000625A loc_625A: ; CODE XREF: processAcceleromerSamplesAxis+112j ROM:0000625A mov.w r5, r0 ROM:0000625C add.w r6, r0 ROM:0000625E mov.b r3l, r1l ROM:00006260 extu.w r1 ROM:00006262 shll.w r1 ROM:00006264 mov.w r1, e2 ROM:00006266 add.w r5, r1 ROM:00006268 mov.w r1, @(0x10+var_8:16,sp) ROM:0000626C mov.w @er1, r1 ROM:0000626E sub.w e6, r1 ROM:00006270 mov.w r1, @er0 ROM:00006272 mov.w e2, r0 ROM:00006274 add.w r4, r0 ROM:00006276 mov.w r0, @(0x10+var_A:16,sp) ROM:0000627A mov.w @er0, r0 ROM:0000627C sub.w e5, r0 ROM:0000627E mov.w r4, r1 ROM:00006280 add.w r6, r1 ROM:00006282 mov.w r0, @er1 ROM:00006284 mov.w @(0x10+var_8:16,sp), r0 ROM:00006288 mov.w @er0, e0 ROM:0000628A add.w e6, e0 ROM:0000628C mov.w e0, @er0 ROM:0000628E mov.w @(0x10+var_A:16,sp), r0 ROM:00006292 mov.w @er0, e0 ROM:00006294 add.w e5, e0 ROM:00006296 mov.w e0, @er0 ROM:00006298 mov.b @(0x10+var_3:16,sp), r0l ROM:0000629C add.b r0l, r3l ROM:0000629E ROM:0000629E loc_629E: ; CODE XREF: processAcceleromerSamplesAxis+E2j ROM:0000629E cmp.b #0x40, r3l ; '@' ROM:000062A0 bcs loc_61C0:16 ROM:000062A4 inc.b r3h ROM:000062A6 mov.b @(0x10+var_F:16,sp), r0l ROM:000062AA mov.b r2l, r0h ROM:000062AC add.b r0l, r0h ROM:000062AE mov.b r0h, r2l ROM:000062B0 ROM:000062B0 loc_62B0: ; CODE XREF: processAcceleromerSamplesAxis+C6j ROM:000062B0 mov.b r2h, r0l ROM:000062B2 cmp.b r0l, r3h ROM:000062B4 bcs loc_61A4:16 ROM:000062B8 mov.b @(0x10+var_3:16,sp), r2h ROM:000062BC ROM:000062BC loc_62BC: ; CODE XREF: processAcceleromerSamplesAxis+B4j ROM:000062BC mov.b r2h, r0l ROM:000062BE shll.b r0l ROM:000062C0 mov.b r0l, @(0x10+var_3:16,sp) ROM:000062C4 cmp.b #0x40, r0l ; '@' ROM:000062C6 bls loc_6192:16 ROM:000062CA sub.w r6, r6 ROM:000062CC ROM:000062CC loc_62CC: ; CODE XREF: processAcceleromerSamplesAxis+24Aj ROM:000062CC mov.w @er5, e6 ROM:000062CE blt loc_62D4:8 ROM:000062D0 mov.w e6, r0 ROM:000062D2 bra loc_62D8:8 ROM:000062D4 ; --------------------------------------------------------------------------- ROM:000062D4 ROM:000062D4 loc_62D4: ; CODE XREF: processAcceleromerSamplesAxis+1F4j ROM:000062D4 mov.w e6, r0 ROM:000062D6 neg.w r0 ROM:000062D8 ROM:000062D8 loc_62D8: ; CODE XREF: processAcceleromerSamplesAxis+1F8j ROM:000062D8 mov.w @er4, e5 ROM:000062DA blt loc_62E0:8 ROM:000062DC mov.w e5, e0 ROM:000062DE bra loc_62E4:8 ROM:000062E0 ; --------------------------------------------------------------------------- ROM:000062E0 ROM:000062E0 loc_62E0: ; CODE XREF: processAcceleromerSamplesAxis+200j ROM:000062E0 mov.w e5, e0 ROM:000062E2 neg.w e0 ROM:000062E4 ROM:000062E4 loc_62E4: ; CODE XREF: processAcceleromerSamplesAxis+204j ROM:000062E4 add.w e0, r0 ROM:000062E6 mov.w @(sometimes_new_rxed_data_for_0xED,er6), e0 ; 0xf7e6 ROM:000062E6 ; 0xfff7e6 ROM:000062EA add.w r0, e0 ROM:000062EC mov.w e0, @(sometimes_new_rxed_data_for_0xED,er6) ; from ??? and from peer play peer ROM:000062F0 inc.w #2, r4 ROM:000062F2 inc.w #2, r5 ROM:000062F4 inc.w #2, r6 ROM:000062F6 mov.w @er5, e5 ROM:000062F8 blt loc_62FE:8 ROM:000062FA mov.w e5, r0 ROM:000062FC bra loc_6302:8 ROM:000062FE ; --------------------------------------------------------------------------- ROM:000062FE ROM:000062FE loc_62FE: ; CODE XREF: processAcceleromerSamplesAxis+21Ej ROM:000062FE mov.w e5, r0 ROM:00006300 neg.w r0 ROM:00006302 ROM:00006302 loc_6302: ; CODE XREF: processAcceleromerSamplesAxis+222j ROM:00006302 mov.w @er4, e6 ROM:00006304 blt loc_630A:8 ROM:00006306 mov.w e6, e0 ROM:00006308 bra loc_630E:8 ROM:0000630A ; --------------------------------------------------------------------------- ROM:0000630A ROM:0000630A loc_630A: ; CODE XREF: processAcceleromerSamplesAxis+22Aj ROM:0000630A mov.w e6, e0 ROM:0000630C neg.w e0 ROM:0000630E ROM:0000630E loc_630E: ; CODE XREF: processAcceleromerSamplesAxis+22Ej ROM:0000630E add.w e0, r0 ROM:00006310 mov.w @(sometimes_new_rxed_data_for_0xED,er6), e0 ; from ??? and from peer play peer ROM:00006314 add.w r0, e0 ROM:00006316 mov.w e0, @(sometimes_new_rxed_data_for_0xED,er6) ; from ??? and from peer play peer ROM:0000631A inc.w #2, r4 ROM:0000631C inc.w #2, r5 ROM:0000631E inc.w #2, r6 ROM:00006320 cmp.w #0x40, r6 ; '@' ROM:00006324 bcs loc_62CC:8 ROM:00006326 add.w #0x10, r7 ROM:0000632A rts ROM:0000632A ; End of function processAcceleromerSamplesAxis ROM:0000632A ROM:0000632C ROM:0000632C ; =============== S U B R O U T I N E ======================================= ROM:0000632C ROM:0000632C ROM:0000632C goToPeerPlayMicroApp: ; CODE XREF: performActionAsRequestedByRemote+136p ROM:0000632C ROM:0000632C ; FUNCTION CHUNK AT ROM:0000266C SIZE 00000014 BYTES ROM:0000632C ROM:0000632C push.l er2 ROM:00006330 push.l er3 ROM:00006334 push.w r4 ROM:00006336 push.l er5 ROM:0000633A push.l er6 ROM:0000633E jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006342 mov.w #0x38, r0 ; '8' ROM:00006346 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000634A mov.w r0, r6 ROM:0000634C mov.w r0, e0 ROM:0000634E mov.w #0x38, r1 ; '8' ROM:00006352 mov.w #0xF6C0, r0 ROM:00006356 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000635A mov.w #gCurSubstateY, r0 ; Substate: ROM:0000635A ; gifted items view: this is item number that has focus and arrow ROM:0000635A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000635A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000635A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000635E mov.b @(0x37:16,er6), r6l ROM:00006362 bld #0, r6l ROM:00006364 bst #1, @er0 ROM:00006368 sub.b r0l, r0l ROM:0000636A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000636A ; battle: ROM:0000636A ; 0 - battle opening animation ROM:0000636A ; 1 - "XYZ appeared" message ROM:0000636A ; 2 - "attack evade catch" directions shown ROM:0000636A ; 3 - our action taken. details in gCurSubstateF ROM:0000636A ; 4 - poke action taken. details in gCurSubstateF ROM:0000636A ; 5 - "was too strong" ROM:0000636A ; 6 - we lost ROM:0000636A ; 7 - fled ROM:0000636A ; 8 - staredown ROM:0000636A ; 9 - almost had it ROM:0000636A ; 10 - "threw a pokeball" ROM:0000636A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000636A ; 12, 14 - pokeball flying ROM:0000636A ; 13 - pokeball flying ROM:0000636A ; 15 - catch animation plays ROM:0000636A ; 16 - caught! ROM:0000636A ; switcht: ROM:0000636A ; cur slected poke name ROM:0000636E mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000636E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000636E ; ItemScreenHandler: ROM:0000636E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000636E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000636E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000636E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000636E ; 0x0010 - light grey pokeball ROM:0000636E ; 0x0020 - tiny map icon ROM:0000636E ; 0x0040 - found item #0 (slot nonempty) ROM:0000636E ; 0x0080 - found item #1 (slot nonempty) ROM:0000636E ; 0x0100 - found item #2 (slot nonempty) ROM:0000636E ; 0x0200 - grey item icon ROM:0000636E ; ItemRXed - what was RXed ROM:0000636E ; 0 - event pokemon ROM:0000636E ; 1 - special route ROM:0000636E ; 2 - item ROM:0000636E ; 3 - special ROM:0000636E ; 4 - stamp: heart ROM:0000636E ; 5 - stamp: spade ROM:0000636E ; 6 - stamp: diamond ROM:0000636E ; 7 - stamp: club ROM:0000636E ; switch: ROM:0000636E ; zero - pokemon does ROM:0000636E ; nonzero - item needs to be switched ROM:0000636E ; item RXed: ROM:0000636E ; what sort of thing was RXed: item, map, route, etc ROM:00006372 bsr calculateAndApplyPeerGift:8 ROM:00006374 jsr pushSeenTrainersListLogDownOne:24 ; move each event log struct (0x244) bytes one down, erasing the last one. YES, lots of EEPROM wear ROM:00006378 jsr logPeerPlay:24 ROM:0000637C jmp common_epilogue_5:24 ROM:0000637C ; End of function goToPeerPlayMicroApp ROM:0000637C ROM:00006380 ROM:00006380 ; =============== S U B R O U T I N E ======================================= ROM:00006380 ROM:00006380 ROM:00006380 interactionHandlerPeerPlay: ; CODE XREF: interactionHandler:case_0x0dp ROM:00006380 rts ROM:00006380 ; End of function interactionHandlerPeerPlay ROM:00006380 ROM:00006382 ROM:00006382 ; =============== S U B R O U T I N E ======================================= ROM:00006382 ROM:00006382 ROM:00006382 calculateAndApplyPeerGift: ; CODE XREF: goToPeerPlayMicroApp+46p ROM:00006382 remote_peer_data = r4 ROM:00006382 route_avail_items = r6 ROM:00006382 remote_peer_data_ = er4 ROM:00006382 mov.w #0x28, e6 ; '(' ROM:00006386 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000638A mov.w #0xBE, r0 ; '+' ROM:0000638E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006392 mov.w #0x38, r0 ; '8' ROM:00006396 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000639A mov.w r0, remote_peer_data ROM:0000639C mov.w r0, e0 ROM:0000639E mov.w #0x38, r1 ; '8' ROM:000063A2 mov.w #0xF6C0, r0 ROM:000063A6 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000063AA mov.w e6, r0 ROM:000063AC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000063B0 mov.w r0, route_avail_items ROM:000063B2 mov.w r0, e0 ROM:000063B4 mov.w #0xCEC8, r0 ROM:000063B8 mov.w e6, r1 ; read all RXed items ROM:000063BA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000063BE mov.l @stepCountTodaySoFar:16, er3 ROM:000063C4 mov.l @remote_peer_data_, er0 ROM:000063C8 add.l er0, er3 ; remote's step count + out step count ROM:000063CA mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:000063CE mov.w @(4:16,remote_peer_data_), e0 ROM:000063D2 add.w e0, r0 ; remote's watts plus my watts ROM:000063D4 mov.w #0xA, e0 ROM:000063D8 mulxu.w e0, er0 ; 10 * (remote's watts plus my watts) ROM:000063DA extu.l er0 ROM:000063DC add.l er0, er3 ; 10 * (remote's watts + my watts) + (remote's steps + my steps) ROM:000063DE cmp.l #20000, er3 ROM:000063E4 bls loc_63EC:8 ROM:000063E6 mov.l #20000, er3 ; limit to 20000 ROM:000063EC ROM:000063EC loc_63EC: ; CODE XREF: calculateAndApplyPeerGift+62j ROM:000063EC sub.b r5l, r5l ROM:000063EE ROM:000063EE find_free_slot_in_RXed_items_list: ; CODE XREF: calculateAndApplyPeerGift+7Ej ROM:000063EE extu.w r5 ROM:000063F0 mov.w r5, r0 ROM:000063F2 shll.w r0 ROM:000063F4 shll.w r0 ROM:000063F6 add.w route_avail_items, r0 ROM:000063F8 mov.w @er0, e0 ROM:000063FA beq loc_6402:8 ROM:000063FC inc.b r5l ROM:000063FE cmp.b #0xA, r5l ROM:00006400 bcs find_free_slot_in_RXed_items_list:8 ROM:00006402 ROM:00006402 loc_6402: ; CODE XREF: calculateAndApplyPeerGift+78j ROM:00006402 sub.b r0l, r0l ROM:00006404 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:00006404 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006408 cmp.b #0xA, r5l ROM:0000640A bcs have_space_in_RXed_gifted_item_lits:8 ROM:0000640C ROM:0000640C no_space_in_RXed_gifted_item_lits: ROM:0000640C mov.l er3, er0 ROM:0000640E sub.l er1, er1 ROM:00006410 mov.b #200, r1l ROM:00006412 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00006416 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:00006416 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000641A bne loc_6422:8 ROM:0000641C mov.b #1, r0l ROM:0000641E mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000641E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006422 ROM:00006422 loc_6422: ; CODE XREF: calculateAndApplyPeerGift+98j ROM:00006422 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00006422 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006426 cmp.b #99, r0l ROM:00006428 bls loc_6430:8 ROM:0000642A mov.b #99, r0l ROM:0000642C mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000642C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006430 ROM:00006430 loc_6430: ; CODE XREF: calculateAndApplyPeerGift+A6j ROM:00006430 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00006430 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006434 jsr addWatts:24 ; (r0l = watts) ROM:00006438 ROM:00006438 have_space_in_RXed_gifted_item_lits: ; CODE XREF: calculateAndApplyPeerGift+88j ROM:00006438 cmp.l #20000, er3 ROM:0000643E bcs loc_6468:8 ROM:00006440 mov.b #0x2C, r0l ; ',' ROM:00006442 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00006442 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006442 ; ItemScreenHandler: ROM:00006442 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006442 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006442 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006442 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006442 ; 0x0010 - light grey pokeball ROM:00006442 ; 0x0020 - tiny map icon ROM:00006442 ; 0x0040 - found item #0 (slot nonempty) ROM:00006442 ; 0x0080 - found item #1 (slot nonempty) ROM:00006442 ; 0x0100 - found item #2 (slot nonempty) ROM:00006442 ; 0x0200 - grey item icon ROM:00006442 ; ItemRXed - what was RXed ROM:00006442 ; 0 - event pokemon ROM:00006442 ; 1 - special route ROM:00006442 ; 2 - item ROM:00006442 ; 3 - special ROM:00006442 ; 4 - stamp: heart ROM:00006442 ; 5 - stamp: spade ROM:00006442 ; 6 - stamp: diamond ROM:00006442 ; 7 - stamp: club ROM:00006442 ; switch: ROM:00006442 ; zero - pokemon does ROM:00006442 ; nonzero - item needs to be switched ROM:00006442 ; item RXed: ROM:00006442 ; what sort of thing was RXed: item, map, route, etc ROM:00006446 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00006446 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000644A bne locret_6526:16 ROM:0000644E mov.l @stepCountTodaySoFar:16, er0 ROM:00006454 mov.l @remote_peer_data_, er1 ROM:00006458 cmp.l er1, er0 ROM:0000645A bls loc_6462:8 ROM:0000645C sub.b r0l, r0l ROM:0000645E jmp loc_6508:24 ROM:00006462 ; --------------------------------------------------------------------------- ROM:00006462 ROM:00006462 loc_6462: ; CODE XREF: calculateAndApplyPeerGift+D8j ROM:00006462 mov.b #1, r0l ROM:00006464 jmp loc_6508:24 ROM:00006468 ; --------------------------------------------------------------------------- ROM:00006468 ROM:00006468 loc_6468: ; CODE XREF: calculateAndApplyPeerGift+BCj ROM:00006468 cmp.l #10000, er3 ROM:0000646E bcs loc_6494:8 ROM:00006470 mov.b #0x2D, r0l ; '-' ROM:00006472 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00006472 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006472 ; ItemScreenHandler: ROM:00006472 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006472 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006472 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006472 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006472 ; 0x0010 - light grey pokeball ROM:00006472 ; 0x0020 - tiny map icon ROM:00006472 ; 0x0040 - found item #0 (slot nonempty) ROM:00006472 ; 0x0080 - found item #1 (slot nonempty) ROM:00006472 ; 0x0100 - found item #2 (slot nonempty) ROM:00006472 ; 0x0200 - grey item icon ROM:00006472 ; ItemRXed - what was RXed ROM:00006472 ; 0 - event pokemon ROM:00006472 ; 1 - special route ROM:00006472 ; 2 - item ROM:00006472 ; 3 - special ROM:00006472 ; 4 - stamp: heart ROM:00006472 ; 5 - stamp: spade ROM:00006472 ; 6 - stamp: diamond ROM:00006472 ; 7 - stamp: club ROM:00006472 ; switch: ROM:00006472 ; zero - pokemon does ROM:00006472 ; nonzero - item needs to be switched ROM:00006472 ; item RXed: ROM:00006472 ; what sort of thing was RXed: item, map, route, etc ROM:00006476 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00006476 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000647A bne locret_6526:16 ROM:0000647E mov.l @stepCountTodaySoFar:16, er0 ROM:00006484 mov.l @remote_peer_data_, er1 ROM:00006488 cmp.l er1, er0 ROM:0000648A bls loc_6490:8 ROM:0000648C mov.b #2, r0l ROM:0000648E bra loc_6508:8 ROM:00006490 ; --------------------------------------------------------------------------- ROM:00006490 ROM:00006490 loc_6490: ; CODE XREF: calculateAndApplyPeerGift+108j ROM:00006490 mov.b #3, r0l ROM:00006492 bra loc_6508:8 ROM:00006494 ; --------------------------------------------------------------------------- ROM:00006494 ROM:00006494 loc_6494: ; CODE XREF: calculateAndApplyPeerGift+ECj ROM:00006494 cmp.l #5000, er3 ROM:0000649A bcs loc_64BE:8 ROM:0000649C mov.b #0x2E, r0l ; '.' ROM:0000649E mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:0000649E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000649E ; ItemScreenHandler: ROM:0000649E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000649E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000649E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000649E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000649E ; 0x0010 - light grey pokeball ROM:0000649E ; 0x0020 - tiny map icon ROM:0000649E ; 0x0040 - found item #0 (slot nonempty) ROM:0000649E ; 0x0080 - found item #1 (slot nonempty) ROM:0000649E ; 0x0100 - found item #2 (slot nonempty) ROM:0000649E ; 0x0200 - grey item icon ROM:0000649E ; ItemRXed - what was RXed ROM:0000649E ; 0 - event pokemon ROM:0000649E ; 1 - special route ROM:0000649E ; 2 - item ROM:0000649E ; 3 - special ROM:0000649E ; 4 - stamp: heart ROM:0000649E ; 5 - stamp: spade ROM:0000649E ; 6 - stamp: diamond ROM:0000649E ; 7 - stamp: club ROM:0000649E ; switch: ROM:0000649E ; zero - pokemon does ROM:0000649E ; nonzero - item needs to be switched ROM:0000649E ; item RXed: ROM:0000649E ; what sort of thing was RXed: item, map, route, etc ROM:000064A2 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:000064A2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000064A6 bne locret_6526:8 ROM:000064A8 mov.l @stepCountTodaySoFar:16, er0 ROM:000064AE mov.l @remote_peer_data_, er1 ROM:000064B2 cmp.l er1, er0 ROM:000064B4 bls loc_64BA:8 ROM:000064B6 mov.b #4, r0l ROM:000064B8 bra loc_6508:8 ROM:000064BA ; --------------------------------------------------------------------------- ROM:000064BA ROM:000064BA loc_64BA: ; CODE XREF: calculateAndApplyPeerGift+132j ROM:000064BA mov.b #5, r0l ROM:000064BC bra loc_6508:8 ROM:000064BE ; --------------------------------------------------------------------------- ROM:000064BE ROM:000064BE loc_64BE: ; CODE XREF: calculateAndApplyPeerGift+118j ROM:000064BE cmp.l #2500, er3 ROM:000064C4 bcs loc_64E8:8 ROM:000064C6 mov.b #0x2F, r0l ; '/' ROM:000064C8 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:000064C8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000064C8 ; ItemScreenHandler: ROM:000064C8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000064C8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000064C8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000064C8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000064C8 ; 0x0010 - light grey pokeball ROM:000064C8 ; 0x0020 - tiny map icon ROM:000064C8 ; 0x0040 - found item #0 (slot nonempty) ROM:000064C8 ; 0x0080 - found item #1 (slot nonempty) ROM:000064C8 ; 0x0100 - found item #2 (slot nonempty) ROM:000064C8 ; 0x0200 - grey item icon ROM:000064C8 ; ItemRXed - what was RXed ROM:000064C8 ; 0 - event pokemon ROM:000064C8 ; 1 - special route ROM:000064C8 ; 2 - item ROM:000064C8 ; 3 - special ROM:000064C8 ; 4 - stamp: heart ROM:000064C8 ; 5 - stamp: spade ROM:000064C8 ; 6 - stamp: diamond ROM:000064C8 ; 7 - stamp: club ROM:000064C8 ; switch: ROM:000064C8 ; zero - pokemon does ROM:000064C8 ; nonzero - item needs to be switched ROM:000064C8 ; item RXed: ROM:000064C8 ; what sort of thing was RXed: item, map, route, etc ROM:000064CC mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:000064CC ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000064D0 bne locret_6526:8 ROM:000064D2 mov.l @stepCountTodaySoFar:16, er0 ROM:000064D8 mov.l @remote_peer_data_, er1 ROM:000064DC cmp.l er1, er0 ROM:000064DE bls loc_64E4:8 ROM:000064E0 mov.b #6, r0l ROM:000064E2 bra loc_6508:8 ROM:000064E4 ; --------------------------------------------------------------------------- ROM:000064E4 ROM:000064E4 loc_64E4: ; CODE XREF: calculateAndApplyPeerGift+15Cj ROM:000064E4 mov.b #7, r0l ROM:000064E6 bra loc_6508:8 ROM:000064E8 ; --------------------------------------------------------------------------- ROM:000064E8 ROM:000064E8 loc_64E8: ; CODE XREF: calculateAndApplyPeerGift+142j ROM:000064E8 mov.b #0x30, r0l ; '0' ROM:000064EA mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:000064EA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000064EA ; ItemScreenHandler: ROM:000064EA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000064EA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000064EA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000064EA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000064EA ; 0x0010 - light grey pokeball ROM:000064EA ; 0x0020 - tiny map icon ROM:000064EA ; 0x0040 - found item #0 (slot nonempty) ROM:000064EA ; 0x0080 - found item #1 (slot nonempty) ROM:000064EA ; 0x0100 - found item #2 (slot nonempty) ROM:000064EA ; 0x0200 - grey item icon ROM:000064EA ; ItemRXed - what was RXed ROM:000064EA ; 0 - event pokemon ROM:000064EA ; 1 - special route ROM:000064EA ; 2 - item ROM:000064EA ; 3 - special ROM:000064EA ; 4 - stamp: heart ROM:000064EA ; 5 - stamp: spade ROM:000064EA ; 6 - stamp: diamond ROM:000064EA ; 7 - stamp: club ROM:000064EA ; switch: ROM:000064EA ; zero - pokemon does ROM:000064EA ; nonzero - item needs to be switched ROM:000064EA ; item RXed: ROM:000064EA ; what sort of thing was RXed: item, map, route, etc ROM:000064EE mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:000064EE ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000064F2 bne locret_6526:8 ROM:000064F4 mov.l @stepCountTodaySoFar:16, er0 ROM:000064FA mov.l @remote_peer_data_, er1 ROM:000064FE cmp.l er1, er0 ROM:00006500 bls loc_6506:8 ROM:00006502 mov.b #8, r0l ROM:00006504 bra loc_6508:8 ROM:00006506 ; --------------------------------------------------------------------------- ROM:00006506 ROM:00006506 loc_6506: ; CODE XREF: calculateAndApplyPeerGift+17Ej ROM:00006506 mov.b #9, r0l ROM:00006508 ROM:00006508 loc_6508: ; CODE XREF: calculateAndApplyPeerGift+DCj ROM:00006508 ; calculateAndApplyPeerGift+E2j ... ROM:00006508 mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00006508 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000650C jsr getItemIdForNthItemOnRoute:24 ; (r0l = n) -> r0 ROM:00006510 extu.w r5 ROM:00006512 shll.w r5 ROM:00006514 shll.w r5 ROM:00006516 add.w route_avail_items, r5 ROM:00006518 mov.w r0, @er5 ROM:0000651A mov.w route_avail_items, e0 ROM:0000651C mov.w #0xCEC8, r0 ROM:00006520 mov.w e6, r1 ROM:00006522 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:00006526 ROM:00006526 locret_6526: ; CODE XREF: calculateAndApplyPeerGift+C8j ROM:00006526 ; calculateAndApplyPeerGift+F8j ... ROM:00006526 rts ROM:00006526 ; End of function calculateAndApplyPeerGift ROM:00006526 ROM:00006528 ROM:00006528 ; =============== S U B R O U T I N E ======================================= ROM:00006528 ROM:00006528 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:00006528 ROM:00006528 drawMusicNoteWithVariableShiftUp: ; CODE XREF: drawPeerPlay+D6p ROM:00006528 ; drawPeerPlay+102p ... ROM:00006528 push.w r6 ROM:0000652A mov.b r0l, r3l ROM:0000652C mov.b r0h, r4h ROM:0000652E mov.b r1l, r4l ROM:00006530 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006534 mov.w #0x10, r0 ROM:00006538 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000653C mov.w r0, r5 ROM:0000653E mov.w #0x2470, r6 ; music note icon 8x8 ROM:00006542 mov.w r0, e0 ROM:00006544 mov.w r6, r0 ROM:00006546 mov.w #0x10, r1 ROM:0000654A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000654E sub.b r6l, r6l ROM:00006550 ROM:00006550 loc_6550: ; CODE XREF: drawMusicNoteWithVariableShiftUp+38j ROM:00006550 mov.b r6l, r0l ROM:00006552 extu.w r0 ROM:00006554 add.w r5, r0 ROM:00006556 mov.b r4l, r1l ROM:00006558 jsr lsrByteAtPtr:24 ; (r0 = ptr, r1 shrBy) // *(uint8_t*)ptr >>= by ROM:0000655C inc.b r6l ROM:0000655E cmp.b #0x10, r6l ROM:00006560 bcs loc_6550:8 ROM:00006562 mov.w r5, e0 ROM:00006564 mov.b r4h, r0h ROM:00006566 mov.b r3l, r0l ROM:00006568 mov.w #0x808, r1 ROM:0000656C jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00006570 pop.w r6 ROM:00006572 rts ROM:00006572 ; End of function drawMusicNoteWithVariableShiftUp ROM:00006572 ROM:00006574 ROM:00006574 ; =============== S U B R O U T I N E ======================================= ROM:00006574 ROM:00006574 ROM:00006574 drawPeerPlay: ; CODE XREF: maybe_viewDoDisplay:case__0x0dp ROM:00006574 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006574 ; battle: ROM:00006574 ; 0 - battle opening animation ROM:00006574 ; 1 - "XYZ appeared" message ROM:00006574 ; 2 - "attack evade catch" directions shown ROM:00006574 ; 3 - our action taken. details in gCurSubstateF ROM:00006574 ; 4 - poke action taken. details in gCurSubstateF ROM:00006574 ; 5 - "was too strong" ROM:00006574 ; 6 - we lost ROM:00006574 ; 7 - fled ROM:00006574 ; 8 - staredown ROM:00006574 ; 9 - almost had it ROM:00006574 ; 10 - "threw a pokeball" ROM:00006574 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006574 ; 12, 14 - pokeball flying ROM:00006574 ; 13 - pokeball flying ROM:00006574 ; 15 - catch animation plays ROM:00006574 ; 16 - caught! ROM:00006574 ; switcht: ROM:00006574 ; cur slected poke name ROM:00006578 cmp.b #3, r0l ROM:0000657A bcc loc_65CC:8 ROM:0000657C mov.w #0x838, r0 ROM:00006580 jsr drawCurPokemonSmallAnimatedFrame:24 ; (r0l = x, r0h = y) ROM:00006584 sub.b r6l, r6l ROM:00006586 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006586 ; gifted items view: this is item number that has focus and arrow ROM:00006586 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006586 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006586 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000658A bld #1, r0l ROM:0000658C bst #0, r6l ROM:0000658E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000658E ; battle: ROM:0000658E ; 0 - battle opening animation ROM:0000658E ; 1 - "XYZ appeared" message ROM:0000658E ; 2 - "attack evade catch" directions shown ROM:0000658E ; 3 - our action taken. details in gCurSubstateF ROM:0000658E ; 4 - poke action taken. details in gCurSubstateF ROM:0000658E ; 5 - "was too strong" ROM:0000658E ; 6 - we lost ROM:0000658E ; 7 - fled ROM:0000658E ; 8 - staredown ROM:0000658E ; 9 - almost had it ROM:0000658E ; 10 - "threw a pokeball" ROM:0000658E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000658E ; 12, 14 - pokeball flying ROM:0000658E ; 13 - pokeball flying ROM:0000658E ; 15 - catch animation plays ROM:0000658E ; 16 - caught! ROM:0000658E ; switcht: ROM:0000658E ; cur slected poke name ROM:00006592 bne loc_65B6:8 ROM:00006594 mov.b #7, r0l ROM:00006596 mov.b @gCurSubstateA:16, r0h ; Substate for various modes ROM:00006596 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006596 ; ItemScreenHandler: ROM:00006596 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006596 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006596 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006596 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006596 ; 0x0010 - light grey pokeball ROM:00006596 ; 0x0020 - tiny map icon ROM:00006596 ; 0x0040 - found item #0 (slot nonempty) ROM:00006596 ; 0x0080 - found item #1 (slot nonempty) ROM:00006596 ; 0x0100 - found item #2 (slot nonempty) ROM:00006596 ; 0x0200 - grey item icon ROM:00006596 ; ItemRXed - what was RXed ROM:00006596 ; 0 - event pokemon ROM:00006596 ; 1 - special route ROM:00006596 ; 2 - item ROM:00006596 ; 3 - special ROM:00006596 ; 4 - stamp: heart ROM:00006596 ; 5 - stamp: spade ROM:00006596 ; 6 - stamp: diamond ROM:00006596 ; 7 - stamp: club ROM:00006596 ; switch: ROM:00006596 ; zero - pokemon does ROM:00006596 ; nonzero - item needs to be switched ROM:00006596 ; item RXed: ROM:00006596 ; what sort of thing was RXed: item, map, route, etc ROM:0000659A sub.b r0h, r0l ROM:0000659C mov.b #3, r0h ROM:0000659E mulxu.b r0h, r0 ROM:000065A0 mov.b #8, r6h ROM:000065A2 sub.b r0l, r6h ROM:000065A4 mov.b r6l, r6l ROM:000065A6 beq loc_65AE:8 ROM:000065A8 mov.b r6h, r0l ROM:000065AA sub.b r1l, r1l ROM:000065AC bra loc_65B2:8 ROM:000065AE ; --------------------------------------------------------------------------- ROM:000065AE ROM:000065AE loc_65AE: ; CODE XREF: drawPeerPlay+32j ROM:000065AE mov.b r6h, r0l ROM:000065B0 mov.b #1, r1l ROM:000065B2 ROM:000065B2 loc_65B2: ; CODE XREF: drawPeerPlay+38j ROM:000065B2 mov.b #8, r0h ROM:000065B4 bra loc_65C8:8 ROM:000065B6 ; --------------------------------------------------------------------------- ROM:000065B6 ROM:000065B6 loc_65B6: ; CODE XREF: drawPeerPlay+1Ej ROM:000065B6 mov.b r6l, r6l ROM:000065B8 beq loc_65C2:8 ROM:000065BA sub.b r1l, r1l ROM:000065BC mov.w #0x808, r0 ROM:000065C0 bra loc_65C8:8 ROM:000065C2 ; --------------------------------------------------------------------------- ROM:000065C2 ROM:000065C2 loc_65C2: ; CODE XREF: drawPeerPlay+44j ROM:000065C2 mov.b #1, r1l ROM:000065C4 mov.b #8, r0h ROM:000065C6 mov.b r0h, r0l ROM:000065C8 ROM:000065C8 loc_65C8: ; CODE XREF: drawPeerPlay+40j ROM:000065C8 ; drawPeerPlay+4Cj ROM:000065C8 jsr drawPeerPlayPokemonAnimationFrame:24 ; (r0l = x, r0h = y, r1l = bool flipHorizontal) ROM:000065CC ROM:000065CC loc_65CC: ; CODE XREF: drawPeerPlay+6j ROM:000065CC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000065CC ; battle: ROM:000065CC ; 0 - battle opening animation ROM:000065CC ; 1 - "XYZ appeared" message ROM:000065CC ; 2 - "attack evade catch" directions shown ROM:000065CC ; 3 - our action taken. details in gCurSubstateF ROM:000065CC ; 4 - poke action taken. details in gCurSubstateF ROM:000065CC ; 5 - "was too strong" ROM:000065CC ; 6 - we lost ROM:000065CC ; 7 - fled ROM:000065CC ; 8 - staredown ROM:000065CC ; 9 - almost had it ROM:000065CC ; 10 - "threw a pokeball" ROM:000065CC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000065CC ; 12, 14 - pokeball flying ROM:000065CC ; 13 - pokeball flying ROM:000065CC ; 15 - catch animation plays ROM:000065CC ; 16 - caught! ROM:000065CC ; switcht: ROM:000065CC ; cur slected poke name ROM:000065D0 cmp.b #1, r0l ROM:000065D2 beq loc_65E8:8 ROM:000065D4 cmp.b #2, r0l ROM:000065D6 beq loc_65FE:8 ROM:000065D8 cmp.b #3, r0l ROM:000065DA beq loc_66EA:16 ROM:000065DE cmp.b #4, r0l ROM:000065E0 bne loc_6734:16 ROM:000065E4 jmp loc_66FC:24 ROM:000065E8 ; --------------------------------------------------------------------------- ROM:000065E8 ROM:000065E8 loc_65E8: ; CODE XREF: drawPeerPlay+5Ej ROM:000065E8 mov.b #1, r1l ROM:000065EA mov.w #0x2002, r0 ROM:000065EE jsr drawPeerPokemonName:24 ; (r0l = x, r0h = y, r1l = borderFlagBits) ROM:000065F2 mov.w #0xE, r1 ROM:000065F6 mov.w #0x2B30, r0 ROM:000065FA jmp loc_6730:24 ROM:000065FE ; --------------------------------------------------------------------------- ROM:000065FE ROM:000065FE loc_65FE: ; CODE XREF: drawPeerPlay+62j ROM:000065FE mov.b @gCurSubstateA:16, r6l ; Substate for various modes ROM:000065FE ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000065FE ; ItemScreenHandler: ROM:000065FE ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000065FE ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000065FE ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000065FE ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000065FE ; 0x0010 - light grey pokeball ROM:000065FE ; 0x0020 - tiny map icon ROM:000065FE ; 0x0040 - found item #0 (slot nonempty) ROM:000065FE ; 0x0080 - found item #1 (slot nonempty) ROM:000065FE ; 0x0100 - found item #2 (slot nonempty) ROM:000065FE ; 0x0200 - grey item icon ROM:000065FE ; ItemRXed - what was RXed ROM:000065FE ; 0 - event pokemon ROM:000065FE ; 1 - special route ROM:000065FE ; 2 - item ROM:000065FE ; 3 - special ROM:000065FE ; 4 - stamp: heart ROM:000065FE ; 5 - stamp: spade ROM:000065FE ; 6 - stamp: diamond ROM:000065FE ; 7 - stamp: club ROM:000065FE ; switch: ROM:000065FE ; zero - pokemon does ROM:000065FE ; nonzero - item needs to be switched ROM:000065FE ; item RXed: ROM:000065FE ; what sort of thing was RXed: item, map, route, etc ROM:00006602 add.b #1, r6l ROM:00006604 mov.b @gCurSubstateA:16, r6h ; Substate for various modes ROM:00006604 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006604 ; ItemScreenHandler: ROM:00006604 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006604 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006604 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006604 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006604 ; 0x0010 - light grey pokeball ROM:00006604 ; 0x0020 - tiny map icon ROM:00006604 ; 0x0040 - found item #0 (slot nonempty) ROM:00006604 ; 0x0080 - found item #1 (slot nonempty) ROM:00006604 ; 0x0100 - found item #2 (slot nonempty) ROM:00006604 ; 0x0200 - grey item icon ROM:00006604 ; ItemRXed - what was RXed ROM:00006604 ; 0 - event pokemon ROM:00006604 ; 1 - special route ROM:00006604 ; 2 - item ROM:00006604 ; 3 - special ROM:00006604 ; 4 - stamp: heart ROM:00006604 ; 5 - stamp: spade ROM:00006604 ; 6 - stamp: diamond ROM:00006604 ; 7 - stamp: club ROM:00006604 ; switch: ROM:00006604 ; zero - pokemon does ROM:00006604 ; nonzero - item needs to be switched ROM:00006604 ; item RXed: ROM:00006604 ; what sort of thing was RXed: item, map, route, etc ROM:00006608 shlr.b r6h ROM:0000660A add.b #1, r6h ROM:0000660C mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000660C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000660C ; ItemScreenHandler: ROM:0000660C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000660C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000660C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000660C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000660C ; 0x0010 - light grey pokeball ROM:0000660C ; 0x0020 - tiny map icon ROM:0000660C ; 0x0040 - found item #0 (slot nonempty) ROM:0000660C ; 0x0080 - found item #1 (slot nonempty) ROM:0000660C ; 0x0100 - found item #2 (slot nonempty) ROM:0000660C ; 0x0200 - grey item icon ROM:0000660C ; ItemRXed - what was RXed ROM:0000660C ; 0 - event pokemon ROM:0000660C ; 1 - special route ROM:0000660C ; 2 - item ROM:0000660C ; 3 - special ROM:0000660C ; 4 - stamp: heart ROM:0000660C ; 5 - stamp: spade ROM:0000660C ; 6 - stamp: diamond ROM:0000660C ; 7 - stamp: club ROM:0000660C ; switch: ROM:0000660C ; zero - pokemon does ROM:0000660C ; nonzero - item needs to be switched ROM:0000660C ; item RXed: ROM:0000660C ; what sort of thing was RXed: item, map, route, etc ROM:00006610 cmp.b #0x2C, r0l ; ',' ROM:00006612 beq loc_662C:8 ROM:00006614 cmp.b #0x2D, r0l ; '-' ROM:00006616 beq loc_6658:8 ROM:00006618 cmp.b #0x2E, r0l ; '.' ROM:0000661A beq loc_6682:8 ROM:0000661C cmp.b #0x2F, r0l ; '/' ROM:0000661E beq loc_66AA:16 ROM:00006622 cmp.b #0x30, r0l ; '0' ROM:00006624 bne loc_66DE:16 ROM:00006628 jmp loc_66D2:24 ROM:0000662C ; --------------------------------------------------------------------------- ROM:0000662C ROM:0000662C loc_662C: ; CODE XREF: drawPeerPlay+9Ej ROM:0000662C mov.b r6l, r6h ROM:0000662E cmp.b #5, r6h ROM:00006630 bls loc_6634:8 ROM:00006632 mov.b #5, r6h ROM:00006634 ROM:00006634 loc_6634: ; CODE XREF: drawPeerPlay+BCj ROM:00006634 sub.b r6l, r6l ROM:00006636 bra loc_6650:8 ROM:00006638 ; --------------------------------------------------------------------------- ROM:00006638 ROM:00006638 loc_6638: ; CODE XREF: drawPeerPlay+E2j ROM:00006638 mov.b r6l, r1l ROM:0000663A extu.w r1 ROM:0000663C mov.b @(PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT,er1), r1l ROM:00006640 mov.b r6l, r0l ROM:00006642 mov.b #8, r0h ROM:00006644 mulxu.b r0h, r0 ROM:00006646 add.b #0x1C, r0l ROM:00006648 sub.b r0h, r0h ROM:0000664A jsr drawMusicNoteWithVariableShiftUp:24 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:0000664E inc.b r6l ROM:00006650 ROM:00006650 loc_6650: ; CODE XREF: drawPeerPlay+C2j ROM:00006650 cmp.b r6h, r6l ROM:00006652 bcc loc_66DE:16 ROM:00006656 bra loc_6638:8 ROM:00006658 ; --------------------------------------------------------------------------- ROM:00006658 ROM:00006658 loc_6658: ; CODE XREF: drawPeerPlay+A2j ROM:00006658 mov.b r6l, r6h ROM:0000665A cmp.b #4, r6h ROM:0000665C bls loc_6660:8 ROM:0000665E mov.b #4, r6h ROM:00006660 ROM:00006660 loc_6660: ; CODE XREF: drawPeerPlay+E8j ROM:00006660 sub.b r6l, r6l ROM:00006662 bra loc_667C:8 ROM:00006664 ; --------------------------------------------------------------------------- ROM:00006664 ROM:00006664 loc_6664: ; CODE XREF: drawPeerPlay+10Cj ROM:00006664 mov.b r6l, r1l ROM:00006666 extu.w r1 ROM:00006668 mov.b @(PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT,er1), r1l ROM:0000666C mov.b r6l, r0l ROM:0000666E mov.b #8, r0h ROM:00006670 mulxu.b r0h, r0 ROM:00006672 add.b #0x1C, r0l ROM:00006674 sub.b r0h, r0h ROM:00006676 jsr drawMusicNoteWithVariableShiftUp:24 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:0000667A inc.b r6l ROM:0000667C ROM:0000667C loc_667C: ; CODE XREF: drawPeerPlay+EEj ROM:0000667C cmp.b r6h, r6l ROM:0000667E bcc loc_66DE:8 ROM:00006680 bra loc_6664:8 ROM:00006682 ; --------------------------------------------------------------------------- ROM:00006682 ROM:00006682 loc_6682: ; CODE XREF: drawPeerPlay+A6j ROM:00006682 cmp.b #3, r6h ROM:00006684 bls loc_6688:8 ROM:00006686 mov.b #3, r6h ROM:00006688 ROM:00006688 loc_6688: ; CODE XREF: drawPeerPlay+110j ROM:00006688 sub.b r6l, r6l ROM:0000668A bra loc_66A4:8 ROM:0000668C ; --------------------------------------------------------------------------- ROM:0000668C ROM:0000668C loc_668C: ; CODE XREF: drawPeerPlay+134j ROM:0000668C mov.b r6l, r1l ROM:0000668E extu.w r1 ROM:00006690 mov.b @(PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT + 1,er1), r1l ROM:00006694 mov.b r6l, r0l ROM:00006696 mov.b #8, r0h ROM:00006698 mulxu.b r0h, r0 ROM:0000669A add.b #0x24, r0l ; '$' ROM:0000669C sub.b r0h, r0h ROM:0000669E jsr drawMusicNoteWithVariableShiftUp:24 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:000066A2 inc.b r6l ROM:000066A4 ROM:000066A4 loc_66A4: ; CODE XREF: drawPeerPlay+116j ROM:000066A4 cmp.b r6h, r6l ROM:000066A6 bcc loc_66DE:8 ROM:000066A8 bra loc_668C:8 ROM:000066AA ; --------------------------------------------------------------------------- ROM:000066AA ROM:000066AA loc_66AA: ; CODE XREF: drawPeerPlay+AAj ROM:000066AA cmp.b #2, r6h ROM:000066AC bls loc_66B0:8 ROM:000066AE mov.b #2, r6h ROM:000066B0 ROM:000066B0 loc_66B0: ; CODE XREF: drawPeerPlay+138j ROM:000066B0 sub.b r6l, r6l ROM:000066B2 bra loc_66CC:8 ROM:000066B4 ; --------------------------------------------------------------------------- ROM:000066B4 ROM:000066B4 loc_66B4: ; CODE XREF: drawPeerPlay+15Cj ROM:000066B4 mov.b r6l, r1l ROM:000066B6 extu.w r1 ROM:000066B8 mov.b @(PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT + 1,er1), r1l ROM:000066BC mov.b r6l, r0l ROM:000066BE mov.b #8, r0h ROM:000066C0 mulxu.b r0h, r0 ROM:000066C2 add.b #0x24, r0l ; '$' ROM:000066C4 sub.b r0h, r0h ROM:000066C6 jsr drawMusicNoteWithVariableShiftUp:24 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:000066CA inc.b r6l ROM:000066CC ROM:000066CC loc_66CC: ; CODE XREF: drawPeerPlay+13Ej ROM:000066CC cmp.b r6h, r6l ROM:000066CE bcc loc_66DE:8 ROM:000066D0 bra loc_66B4:8 ROM:000066D2 ; --------------------------------------------------------------------------- ROM:000066D2 ROM:000066D2 loc_66D2: ; CODE XREF: drawPeerPlay+B4j ROM:000066D2 mov.b @PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT + 1, r1l ROM:000066D6 mov.w #0x2C, r0 ; ',' ROM:000066DA jsr drawMusicNoteWithVariableShiftUp:24 ; (r0l = x, r0h = y, r1l = shiftUpByNumPixels) //note is small so there is space ot move it up ROM:000066DE ROM:000066DE loc_66DE: ; CODE XREF: drawPeerPlay+B0j ROM:000066DE ; drawPeerPlay+DEj ... ROM:000066DE mov.w #0xF, r1 ROM:000066E2 mov.b @gCurSubstateA+1:16, r0h ; custom message ROM:000066E6 mov.b #0x30, r0l ; '0' ; XXX above ROM:000066E8 bra loc_6730:8 ROM:000066EA ; --------------------------------------------------------------------------- ROM:000066EA ROM:000066EA loc_66EA: ; CODE XREF: drawPeerPlay+66j ROM:000066EA mov.w #0x420, r0 ROM:000066EE jsr drawLargePresentItem:24 ; (r0l = x, r0h = y) ROM:000066F2 mov.w #0xF, r1 ROM:000066F6 mov.w #0x3130, r0 ; "Here's a gift..." ROM:000066FA bra loc_6730:8 ROM:000066FC ; --------------------------------------------------------------------------- ROM:000066FC ROM:000066FC loc_66FC: ; CODE XREF: drawPeerPlay+70j ROM:000066FC mov.w #0x420, r0 ROM:00006700 jsr drawLargePresentItem:24 ; (r0l = x, r0h = y) ROM:00006704 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:00006704 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006708 beq loc_671A:8 ROM:0000670A extu.w r0 ROM:0000670C mov.w r0, e0 ROM:0000670E mov.b #0xD, r1l ROM:00006710 mov.w #0x2002, r0 ROM:00006714 jsr drawNumberAndWattsymbolOnscreen:24 ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:00006718 bra loc_6728:8 ROM:0000671A ; --------------------------------------------------------------------------- ROM:0000671A ROM:0000671A loc_671A: ; CODE XREF: drawPeerPlay+194j ROM:0000671A mov.b #0xD, r1h ROM:0000671C mov.b @gCurSubstateB:16, r1l ; Substate: ROM:0000671C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006720 mov.w #0x2000, r0 ROM:00006724 jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00006728 ROM:00006728 loc_6728: ; CODE XREF: drawPeerPlay+1A4j ROM:00006728 mov.w #0xE, r1 ROM:0000672C mov.w #0xF30, r0 ; "received!" ROM:00006730 ROM:00006730 loc_6730: ; CODE XREF: drawPeerPlay+86j ROM:00006730 ; drawPeerPlay+174j ... ROM:00006730 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00006730 ; ROM:00006730 ; //always drawn at x = 0 ROM:00006730 ; ROM:00006734 ROM:00006734 loc_6734: ; CODE XREF: drawPeerPlay+6Cj ROM:00006734 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006734 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006734 ; ItemScreenHandler: ROM:00006734 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006734 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006734 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006734 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006734 ; 0x0010 - light grey pokeball ROM:00006734 ; 0x0020 - tiny map icon ROM:00006734 ; 0x0040 - found item #0 (slot nonempty) ROM:00006734 ; 0x0080 - found item #1 (slot nonempty) ROM:00006734 ; 0x0100 - found item #2 (slot nonempty) ROM:00006734 ; 0x0200 - grey item icon ROM:00006734 ; ItemRXed - what was RXed ROM:00006734 ; 0 - event pokemon ROM:00006734 ; 1 - special route ROM:00006734 ; 2 - item ROM:00006734 ; 3 - special ROM:00006734 ; 4 - stamp: heart ROM:00006734 ; 5 - stamp: spade ROM:00006734 ; 6 - stamp: diamond ROM:00006734 ; 7 - stamp: club ROM:00006734 ; switch: ROM:00006734 ; zero - pokemon does ROM:00006734 ; nonzero - item needs to be switched ROM:00006734 ; item RXed: ROM:00006734 ; what sort of thing was RXed: item, map, route, etc ROM:00006738 inc.b r0l ROM:0000673A mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000673A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000673A ; ItemScreenHandler: ROM:0000673A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000673A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000673A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000673A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000673A ; 0x0010 - light grey pokeball ROM:0000673A ; 0x0020 - tiny map icon ROM:0000673A ; 0x0040 - found item #0 (slot nonempty) ROM:0000673A ; 0x0080 - found item #1 (slot nonempty) ROM:0000673A ; 0x0100 - found item #2 (slot nonempty) ROM:0000673A ; 0x0200 - grey item icon ROM:0000673A ; ItemRXed - what was RXed ROM:0000673A ; 0 - event pokemon ROM:0000673A ; 1 - special route ROM:0000673A ; 2 - item ROM:0000673A ; 3 - special ROM:0000673A ; 4 - stamp: heart ROM:0000673A ; 5 - stamp: spade ROM:0000673A ; 6 - stamp: diamond ROM:0000673A ; 7 - stamp: club ROM:0000673A ; switch: ROM:0000673A ; zero - pokemon does ROM:0000673A ; nonzero - item needs to be switched ROM:0000673A ; item RXed: ROM:0000673A ; what sort of thing was RXed: item, map, route, etc ROM:0000673E cmp.b #8, r0l ROM:00006740 bcs loc_676A:8 ROM:00006742 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006742 ; battle: ROM:00006742 ; 0 - battle opening animation ROM:00006742 ; 1 - "XYZ appeared" message ROM:00006742 ; 2 - "attack evade catch" directions shown ROM:00006742 ; 3 - our action taken. details in gCurSubstateF ROM:00006742 ; 4 - poke action taken. details in gCurSubstateF ROM:00006742 ; 5 - "was too strong" ROM:00006742 ; 6 - we lost ROM:00006742 ; 7 - fled ROM:00006742 ; 8 - staredown ROM:00006742 ; 9 - almost had it ROM:00006742 ; 10 - "threw a pokeball" ROM:00006742 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006742 ; 12, 14 - pokeball flying ROM:00006742 ; 13 - pokeball flying ROM:00006742 ; 15 - catch animation plays ROM:00006742 ; 16 - caught! ROM:00006742 ; switcht: ROM:00006742 ; cur slected poke name ROM:00006746 inc.b r0l ROM:00006748 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006748 ; battle: ROM:00006748 ; 0 - battle opening animation ROM:00006748 ; 1 - "XYZ appeared" message ROM:00006748 ; 2 - "attack evade catch" directions shown ROM:00006748 ; 3 - our action taken. details in gCurSubstateF ROM:00006748 ; 4 - poke action taken. details in gCurSubstateF ROM:00006748 ; 5 - "was too strong" ROM:00006748 ; 6 - we lost ROM:00006748 ; 7 - fled ROM:00006748 ; 8 - staredown ROM:00006748 ; 9 - almost had it ROM:00006748 ; 10 - "threw a pokeball" ROM:00006748 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006748 ; 12, 14 - pokeball flying ROM:00006748 ; 13 - pokeball flying ROM:00006748 ; 15 - catch animation plays ROM:00006748 ; 16 - caught! ROM:00006748 ; switcht: ROM:00006748 ; cur slected poke name ROM:0000674C sub.b r0l, r0l ROM:0000674E mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000674E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000674E ; ItemScreenHandler: ROM:0000674E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000674E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000674E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000674E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000674E ; 0x0010 - light grey pokeball ROM:0000674E ; 0x0020 - tiny map icon ROM:0000674E ; 0x0040 - found item #0 (slot nonempty) ROM:0000674E ; 0x0080 - found item #1 (slot nonempty) ROM:0000674E ; 0x0100 - found item #2 (slot nonempty) ROM:0000674E ; 0x0200 - grey item icon ROM:0000674E ; ItemRXed - what was RXed ROM:0000674E ; 0 - event pokemon ROM:0000674E ; 1 - special route ROM:0000674E ; 2 - item ROM:0000674E ; 3 - special ROM:0000674E ; 4 - stamp: heart ROM:0000674E ; 5 - stamp: spade ROM:0000674E ; 6 - stamp: diamond ROM:0000674E ; 7 - stamp: club ROM:0000674E ; switch: ROM:0000674E ; zero - pokemon does ROM:0000674E ; nonzero - item needs to be switched ROM:0000674E ; item RXed: ROM:0000674E ; what sort of thing was RXed: item, map, route, etc ROM:00006752 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006752 ; battle: ROM:00006752 ; 0 - battle opening animation ROM:00006752 ; 1 - "XYZ appeared" message ROM:00006752 ; 2 - "attack evade catch" directions shown ROM:00006752 ; 3 - our action taken. details in gCurSubstateF ROM:00006752 ; 4 - poke action taken. details in gCurSubstateF ROM:00006752 ; 5 - "was too strong" ROM:00006752 ; 6 - we lost ROM:00006752 ; 7 - fled ROM:00006752 ; 8 - staredown ROM:00006752 ; 9 - almost had it ROM:00006752 ; 10 - "threw a pokeball" ROM:00006752 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006752 ; 12, 14 - pokeball flying ROM:00006752 ; 13 - pokeball flying ROM:00006752 ; 15 - catch animation plays ROM:00006752 ; 16 - caught! ROM:00006752 ; switcht: ROM:00006752 ; cur slected poke name ROM:00006756 cmp.b #2, r0l ROM:00006758 beq loc_6760:8 ROM:0000675A cmp.b #4, r0l ROM:0000675C bne loc_676A:8 ROM:0000675E bra loc_6764:8 ROM:00006760 ; --------------------------------------------------------------------------- ROM:00006760 ROM:00006760 loc_6760: ; CODE XREF: drawPeerPlay+1E4j ROM:00006760 mov.b #9, r0l ROM:00006762 bra loc_6766:8 ROM:00006764 ; --------------------------------------------------------------------------- ROM:00006764 ROM:00006764 loc_6764: ; CODE XREF: drawPeerPlay+1EAj ROM:00006764 mov.b #6, r0l ROM:00006766 ROM:00006766 loc_6766: ; CODE XREF: drawPeerPlay+1EEj ROM:00006766 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000676A ROM:0000676A loc_676A: ; CODE XREF: drawPeerPlay+1CCj ROM:0000676A ; drawPeerPlay+1E8j ROM:0000676A mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000676A ; battle: ROM:0000676A ; 0 - battle opening animation ROM:0000676A ; 1 - "XYZ appeared" message ROM:0000676A ; 2 - "attack evade catch" directions shown ROM:0000676A ; 3 - our action taken. details in gCurSubstateF ROM:0000676A ; 4 - poke action taken. details in gCurSubstateF ROM:0000676A ; 5 - "was too strong" ROM:0000676A ; 6 - we lost ROM:0000676A ; 7 - fled ROM:0000676A ; 8 - staredown ROM:0000676A ; 9 - almost had it ROM:0000676A ; 10 - "threw a pokeball" ROM:0000676A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000676A ; 12, 14 - pokeball flying ROM:0000676A ; 13 - pokeball flying ROM:0000676A ; 15 - catch animation plays ROM:0000676A ; 16 - caught! ROM:0000676A ; switcht: ROM:0000676A ; cur slected poke name ROM:0000676E cmp.b #5, r0l ROM:00006770 bcs loc_677C:8 ROM:00006772 jsr someStateVarShuffling:24 ROM:00006776 sub.b r0l, r0l ROM:00006778 jsr setCurrentlyActiveView:24 ROM:0000677C ROM:0000677C loc_677C: ; CODE XREF: drawPeerPlay+1FCj ROM:0000677C sub.w r0, r0 ROM:0000677E jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00006782 rts ROM:00006782 ; End of function drawPeerPlay ROM:00006782 ROM:00006784 ROM:00006784 ; =============== S U B R O U T I N E ======================================= ROM:00006784 ROM:00006784 ; (r0 = u8[40]) //check if any trainer we've seen has same 40 bytes at offset8 into trainer info ROM:00006784 ROM:00006784 seeIfWeSawThisTrainerBefore: ; CODE XREF: irCommsEventLoop+52Cp ROM:00006784 ; irCommsEventLoop+5DEp ROM:00006784 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:00006788 mov.w r0, e5 ROM:0000678A mov.w #0xDE24, r3 ROM:0000678E mov.w #DECOMPRESSION_BUFFER, r5 ROM:00006792 sub.b r4l, r4l ROM:00006794 bra loc_67D4:8 ROM:00006796 ; --------------------------------------------------------------------------- ROM:00006796 ROM:00006796 loc_6796: ; CODE XREF: seeIfWeSawThisTrainerBefore+52j ROM:00006796 mov.b #1, r6h ROM:00006798 mov.w #8, r0 ROM:0000679C add.w r3, r0 ROM:0000679E mov.w #0x28, r1 ; '(' ; read 0x28 at offset 8 of this record ROM:000067A2 mov.w r5, e0 ROM:000067A4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000067A8 sub.b r6l, r6l ROM:000067AA ROM:000067AA loc_67AA: ; CODE XREF: seeIfWeSawThisTrainerBefore+40j ROM:000067AA mov.b r6l, r0l ROM:000067AC extu.w r0 ROM:000067AE mov.w r0, e0 ROM:000067B0 add.w r5, r0 ROM:000067B2 mov.w e5, r1 ROM:000067B4 add.w e0, r1 ROM:000067B6 mov.b @er0, r0l ROM:000067B8 mov.b @er1, r1l ROM:000067BA cmp.b r1l, r0l ROM:000067BC beq loc_67C0:8 ROM:000067BE sub.b r6h, r6h ROM:000067C0 ROM:000067C0 loc_67C0: ; CODE XREF: seeIfWeSawThisTrainerBefore+38j ROM:000067C0 inc.b r6l ROM:000067C2 cmp.b #0x28, r6l ; '(' ROM:000067C4 bcs loc_67AA:8 ROM:000067C6 cmp.b #1, r6h ROM:000067C8 bne loc_67CE:8 ROM:000067CA mov.b #1, r0l ROM:000067CC bra loc_67DA:8 ROM:000067CE ; --------------------------------------------------------------------------- ROM:000067CE ROM:000067CE loc_67CE: ; CODE XREF: seeIfWeSawThisTrainerBefore+44j ROM:000067CE inc.b r4l ROM:000067D0 add.w #0x224, r3 ROM:000067D4 ROM:000067D4 loc_67D4: ; CODE XREF: seeIfWeSawThisTrainerBefore+10j ROM:000067D4 cmp.b #0xA, r4l ROM:000067D6 bcs loc_6796:8 ROM:000067D8 sub.b r0l, r0l ROM:000067DA ROM:000067DA loc_67DA: ; CODE XREF: seeIfWeSawThisTrainerBefore+48j ROM:000067DA jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000067DA ; End of function seeIfWeSawThisTrainerBefore ROM:000067DA ROM:000067DE ROM:000067DE ; =============== S U B R O U T I N E ======================================= ROM:000067DE ROM:000067DE ; move each event log struct (0x244) bytes one down, erasing the last one. YES, lots of EEPROM wear ROM:000067DE ROM:000067DE pushSeenTrainersListLogDownOne: ; CODE XREF: goToPeerPlayMicroApp+48p ROM:000067DE mov.w #0x224, r6 ROM:000067E2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000067E6 mov.w r6, r0 ROM:000067E8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000067EC mov.w r0, r5 ROM:000067EE mov.w #0xEF44, e5 ROM:000067F2 mov.w #0xF168, e6 ROM:000067F6 mov.b #0xA, r4l ROM:000067F8 ROM:000067F8 loc_67F8: ; CODE XREF: pushSeenTrainersListLogDownOne+34j ROM:000067F8 mov.w r6, r1 ROM:000067FA mov.w r5, e0 ROM:000067FC mov.w e5, r0 ROM:000067FE jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006802 mov.w r6, r1 ROM:00006804 mov.w r5, e0 ROM:00006806 mov.w e6, r0 ROM:00006808 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000680C sub.w r6, e5 ROM:0000680E sub.w r6, e6 ROM:00006810 dec.b r4l ROM:00006812 bne loc_67F8:8 ROM:00006814 rts ROM:00006814 ; End of function pushSeenTrainersListLogDownOne ROM:00006814 ROM:00006816 ROM:00006816 ; =============== S U B R O U T I N E ======================================= ROM:00006816 ROM:00006816 ROM:00006816 logPeerPlay: ; CODE XREF: goToPeerPlayMicroApp+4Cp ROM:00006816 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000681A mov.w #0xBE, r0 ; '+' ROM:0000681E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006822 mov.w r0, r3 ROM:00006824 mov.w r0, e0 ROM:00006826 mov.w #0xBE, r1 ; '+' ROM:0000682A mov.w #0x8F00, r0 ROM:0000682E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006832 mov.w #0x38, r0 ; '8' ROM:00006836 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000683A mov.w r0, r5 ROM:0000683C mov.w r0, e0 ROM:0000683E mov.w #0x38, r1 ; '8' ROM:00006842 mov.w #0xF6C0, r0 ROM:00006846 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000684A mov.w #0x88, r0 ; 'ê' ROM:0000684E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006852 mov.w r0, r6 ROM:00006854 mov.l @(8:16,er5), er1 ; from offset 0x00 in redundant data 0x0ED/0x1ED ROM:0000685A mov.l er1, @(4:16,er0) ROM:00006860 mov.w @(0xC:16,er5), e0 ; from offset 0x08 in redundant data 0x0ED/0x1ED ROM:00006864 mov.w e0, @(8:16,er0) ROM:00006868 mov.w @(0xE:16,er5), e0 ; remote.walkingSpecies - what poke spcies is in this walker ROM:0000686C mov.w e0, @(0xC:16,er0) ROM:00006870 mov.b @(0x36:16,er5), r1l ; remote.gender/form (for the poke in this walker). top bit = isShiny ROM:00006874 and.b #0x1F, r1l ROM:00006876 mov.b @(0x86:16,er0), r1h ROM:0000687A and.b #0xE0, r1h ROM:0000687C and.b #0x1F, r1l ROM:0000687E or.b r1l, r1h ROM:00006880 mov.b r1h, @(0x86:16,er0) ROM:00006884 mov.b @(0x36:16,er5), r1l ROM:00006888 rotl.b r1l ROM:0000688A rotl.b r1l ROM:0000688C rotl.b r1l ROM:0000688E and.b #3, r1l ROM:00006890 add.w #0x86, r0 ; 'å' ROM:00006894 mov.w #0x102, r2 ROM:00006898 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:0000689C mov.w #0x86, r0 ; 'å' ROM:000068A0 add.w r6, r0 ROM:000068A2 mov.b @(0x36:16,er5), r1l ROM:000068A6 bld #7, r1l ROM:000068A8 bst #7, @er0 ROM:000068AC mov.w @(4:16,er5), r0 ; remote.curWatts ROM:000068B0 mov.w r0, @(0x7A:16,er6) ROM:000068B4 mov.l @er5, er0 ; remote.curStepCount ROM:000068B8 mov.l er0, @(0x80:16,er6) ROM:000068BE sub.b r4l, r4l ROM:000068C0 ROM:000068C0 loc_68C0: ; CODE XREF: logPeerPlay+C6j ROM:000068C0 extu.w r4 ROM:000068C2 mov.w r4, e0 ROM:000068C4 mov.w #0x36, r0 ; '6' ; remote.pokeNick -> 0x36 ROM:000068C8 add.w r6, r0 ROM:000068CA add.w e0, r0 ROM:000068CC mov.w #0x10, r1 ROM:000068D0 add.w r5, r1 ROM:000068D2 add.w e0, r1 ROM:000068D4 mov.b @er1, r1l ROM:000068D6 mov.b r1l, @er0 ROM:000068D8 inc.b r4l ROM:000068DA cmp.b #0x16, r4l ROM:000068DC bcs loc_68C0:8 ROM:000068DE sub.b r4l, r4l ROM:000068E0 ROM:000068E0 loc_68E0: ; CODE XREF: logPeerPlay+E6j ROM:000068E0 extu.w r4 ROM:000068E2 mov.w r4, e0 ROM:000068E4 mov.w #0x10, r0 ROM:000068E8 add.w r6, r0 ROM:000068EA add.w e0, r0 ROM:000068EC mov.w #0x26, r1 ; '&' ; remote.trainerNm -> 0x10 ROM:000068F0 add.w r5, r1 ROM:000068F2 add.w e0, r1 ROM:000068F4 mov.b @er1, r1l ROM:000068F6 mov.b r1l, @er0 ROM:000068F8 inc.b r4l ROM:000068FA cmp.b #0x12, r4l ; bug..shoudl be 0x10. luckily harmless ROM:000068FC bcs loc_68E0:8 ROM:000068FE mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:000068FE ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006902 bne locret_6938:8 ROM:00006904 mov.b @gCurSubstateB:16, r5l ; Substate: ROM:00006904 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00006908 cmp.b #0xA, r5l ROM:0000690A bcc locret_6938:8 ROM:0000690C mov.b r5l, r1l ROM:0000690E extu.w r1 ROM:00006910 shll.w r1 ROM:00006912 mov.w #0x8C, r0 ; 'î' ROM:00006916 add.w r3, r0 ROM:00006918 add.w r1, r0 ROM:0000691A sub.b r1l, r1l ROM:0000691C push.w r1 ROM:0000691E sub.b r1h, r1h ROM:00006920 mov.b @RamCache_settingsByte:16, r1l ROM:00006924 bld #0, r1l ROM:00006926 bst #0, r1h ROM:00006928 mov.b r5l, r1l ROM:0000692A add.b #1, r1l ROM:0000692C mov.w @er0, e1 ROM:0000692E mov.w r6, e0 ROM:00006930 mov.w r3, r0 ROM:00006932 jsr logEvent:24 ; ( ROM:00006932 ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:00006932 ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:00006932 ; r1l = eventTYpe ROM:00006932 ; r1h = boolean isOnSpecialEventRoute ROM:00006932 ; e1 = extraInfo (eg: item type) ROM:00006932 ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:00006932 ; ) ROM:00006936 adds #2, sp ROM:00006938 ROM:00006938 locret_6938: ; CODE XREF: logPeerPlay+ECj ROM:00006938 ; logPeerPlay+F4j ROM:00006938 rts ROM:00006938 ; End of function logPeerPlay ROM:00006938 ROM:0000693A ROM:0000693A ; =============== S U B R O U T I N E ======================================= ROM:0000693A ROM:0000693A ROM:0000693A setEventLoopFunc: ; CODE XREF: performActionAsRequestedByRemote+214p ROM:0000693A ; ENTRY+D4p ... ROM:0000693A push.w r6 ROM:0000693C mov.w @currentEventLoopFunc:16, r6 ROM:00006940 mov.w r6, @prevEventLoopFunc:16 ROM:00006944 mov.w r0, @currentEventLoopFunc:16 ROM:00006948 pop.w r6 ROM:0000694A rts ROM:0000694A ; End of function setEventLoopFunc ROM:0000694A ROM:0000694C ROM:0000694C ; =============== S U B R O U T I N E ======================================= ROM:0000694C ROM:0000694C ROM:0000694C goToConnectionMicroApp: ; CODE XREF: interactionHandlerHomeScreen:loc_6A58p ROM:0000694C ; interactionHAndlerMainMenu:case__2p ROM:0000694C mov.w @currentEventLoopFunc:16, r0 ROM:00006950 mov.w #sleepModeEventLoop, r1 ROM:00006954 cmp.w r1, r0 ROM:00006956 bne locret_69B6:8 ROM:00006958 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00006958 ; 0x04 - have walking poke ROM:0000695C bld #1, r0l ROM:0000695E bcs loc_697E:8 ROM:00006960 mov.b #0x40, r0l ; '@' ROM:00006962 jsr someLcdRelatedThing:24 ROM:00006966 sub.b r0l, r0l ROM:00006968 jsr drawHappyPokewalkerWithActiveConnectivityAnimation:24 ROM:0000696C jsr someLcdThingYetAgain:24 ROM:00006970 mov.b #0x40, r0l ; '@' ROM:00006972 jsr someLcdRelatedThing:24 ROM:00006976 mov.b #1, r0l ROM:00006978 jsr drawHappyPokewalkerWithActiveConnectivityAnimation:24 ROM:0000697C bra loc_69A6:8 ROM:0000697E ; --------------------------------------------------------------------------- ROM:0000697E ROM:0000697E loc_697E: ; CODE XREF: goToConnectionMicroApp+12j ROM:0000697E mov.b #0x40, r0l ; '@' ROM:00006980 jsr someLcdRelatedThing:24 ROM:00006984 sub.b r0l, r0l ROM:00006986 jsr connectionStartHandlerLikely:24 ROM:0000698A sub.w r0, r0 ROM:0000698C jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00006990 jsr someLcdThingYetAgain:24 ROM:00006994 mov.b #0x40, r0l ; '@' ROM:00006996 jsr someLcdRelatedThing:24 ROM:0000699A mov.b #1, r0l ROM:0000699C jsr connectionStartHandlerLikely:24 ROM:000069A0 sub.w r0, r0 ROM:000069A2 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:000069A6 ROM:000069A6 loc_69A6: ; CODE XREF: goToConnectionMicroApp+30j ROM:000069A6 jsr someLcdThingYetAgain:24 ROM:000069AA ldc.b #0x80, ccr ; 'Ç' ROM:000069AC jsr configureSciAndSendPingByte:24 ROM:000069B0 mov.w #irCommsEventLoop, r0 ROM:000069B4 bsr setEventLoopFunc:8 ROM:000069B6 ROM:000069B6 locret_69B6: ; CODE XREF: goToConnectionMicroApp+Aj ROM:000069B6 rts ROM:000069B6 ; End of function goToConnectionMicroApp ROM:000069B6 ROM:000069B8 ROM:000069B8 ; =============== S U B R O U T I N E ======================================= ROM:000069B8 ROM:000069B8 ROM:000069B8 setCurrentlyActiveView: ; CODE XREF: performActionAsRequestedByRemote+F4p ROM:000069B8 ; performActionAsRequestedByRemote+10Ep ... ROM:000069B8 mov.b r0l, @currentlyActiveView:16 ROM:000069BC rts ROM:000069BC ; End of function setCurrentlyActiveView ROM:000069BC ROM:000069BE ROM:000069BE ; =============== S U B R O U T I N E ======================================= ROM:000069BE ROM:000069BE ; (r0l = x, r0h = y) ROM:000069BE ROM:000069BE homeScreenDrawLargeCurrentPokemonImage: ; CODE XREF: drawLargePokemonImageWithBarsOnTopAndBottomOfScreen+Cp ROM:000069BE ; drawLargePokemonImageWithBarsOnTopAndBottomOfScreen2+Cp ... ROM:000069BE mov.b r0l, r5h ROM:000069C0 mov.b r0h, r5l ROM:000069C2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000069C6 mov.w #0x300, e3 ROM:000069CA mov.w e3, r0 ROM:000069CC jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000069D0 mov.w r0, r3 ROM:000069D2 mov.w r0, e0 ROM:000069D4 mov.w #0x8F00, r0 ROM:000069D8 mov.w #0x10, r1 ROM:000069DC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000069E0 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:000069E0 ; battle: ROM:000069E0 ; 0 - battle opening animation ROM:000069E0 ; 1 - "XYZ appeared" message ROM:000069E0 ; 2 - "attack evade catch" directions shown ROM:000069E0 ; 3 - our action taken. details in gCurSubstateF ROM:000069E0 ; 4 - poke action taken. details in gCurSubstateF ROM:000069E0 ; 5 - "was too strong" ROM:000069E0 ; 6 - we lost ROM:000069E0 ; 7 - fled ROM:000069E0 ; 8 - staredown ROM:000069E0 ; 9 - almost had it ROM:000069E0 ; 10 - "threw a pokeball" ROM:000069E0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:000069E0 ; 12, 14 - pokeball flying ROM:000069E0 ; 13 - pokeball flying ROM:000069E0 ; 15 - catch animation plays ROM:000069E0 ; 16 - caught! ROM:000069E0 ; switcht: ROM:000069E0 ; cur slected poke name ROM:000069E4 beq use_animation:8 ROM:000069E6 ROM:000069E6 no_animation: ROM:000069E6 mov.w e3, r1 ROM:000069E8 mov.w #0x933E, r0 ROM:000069EC bra loc_6A06:8 ROM:000069EE ; --------------------------------------------------------------------------- ROM:000069EE ROM:000069EE use_animation: ; CODE XREF: homeScreenDrawLargeCurrentPokemonImage+26j ROM:000069EE mov.w e3, r1 ROM:000069F0 mov.b @curUiFlags:16, r0l ; bits: ROM:000069F0 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000069F0 ; 0x02 - slower animation frame ROM:000069F4 extu.w r0 ROM:000069F6 shar.w r0 ROM:000069F8 and.w #1, r0 ROM:000069FC mov.w #0x300, e0 ROM:00006A00 mulxu.w e0, er0 ROM:00006A02 add.w #0x933E, r0 ; current pokemon animated sprite for main screen 64 x 48 x 2 frame ROM:00006A06 ROM:00006A06 loc_6A06: ; CODE XREF: homeScreenDrawLargeCurrentPokemonImage+2Ej ROM:00006A06 mov.w r3, e0 ROM:00006A08 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006A0C mov.w r3, e0 ROM:00006A0E mov.b r5l, r0h ROM:00006A10 mov.b r5h, r0l ROM:00006A12 mov.w #0x3040, r1 ROM:00006A16 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00006A1A rts ROM:00006A1A ; End of function homeScreenDrawLargeCurrentPokemonImage ROM:00006A1A ROM:00006A1C ROM:00006A1C ; =============== S U B R O U T I N E ======================================= ROM:00006A1C ROM:00006A1C ROM:00006A1C someStateVarShuffling: ; CODE XREF: performActionAsRequestedByRemote:loc_296p ROM:00006A1C ; ENTRY+D8p ... ROM:00006A1C sub.b r0l, r0l ROM:00006A1E mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00006A1E ; gifted items view: this is item number that has focus and arrow ROM:00006A1E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006A1E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006A1E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006A22 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006A22 ; battle: ROM:00006A22 ; 0 - battle opening animation ROM:00006A22 ; 1 - "XYZ appeared" message ROM:00006A22 ; 2 - "attack evade catch" directions shown ROM:00006A22 ; 3 - our action taken. details in gCurSubstateF ROM:00006A22 ; 4 - poke action taken. details in gCurSubstateF ROM:00006A22 ; 5 - "was too strong" ROM:00006A22 ; 6 - we lost ROM:00006A22 ; 7 - fled ROM:00006A22 ; 8 - staredown ROM:00006A22 ; 9 - almost had it ROM:00006A22 ; 10 - "threw a pokeball" ROM:00006A22 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006A22 ; 12, 14 - pokeball flying ROM:00006A22 ; 13 - pokeball flying ROM:00006A22 ; 15 - catch animation plays ROM:00006A22 ; 16 - caught! ROM:00006A22 ; switcht: ROM:00006A22 ; cur slected poke name ROM:00006A26 mov.b #0x20, r0h ; ' ' ROM:00006A28 mov.b r0h, @gCurSubstateA:16 ; Substate for various modes ROM:00006A28 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006A28 ; ItemScreenHandler: ROM:00006A28 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006A28 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006A28 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006A28 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006A28 ; 0x0010 - light grey pokeball ROM:00006A28 ; 0x0020 - tiny map icon ROM:00006A28 ; 0x0040 - found item #0 (slot nonempty) ROM:00006A28 ; 0x0080 - found item #1 (slot nonempty) ROM:00006A28 ; 0x0100 - found item #2 (slot nonempty) ROM:00006A28 ; 0x0200 - grey item icon ROM:00006A28 ; ItemRXed - what was RXed ROM:00006A28 ; 0 - event pokemon ROM:00006A28 ; 1 - special route ROM:00006A28 ; 2 - item ROM:00006A28 ; 3 - special ROM:00006A28 ; 4 - stamp: heart ROM:00006A28 ; 5 - stamp: spade ROM:00006A28 ; 6 - stamp: diamond ROM:00006A28 ; 7 - stamp: club ROM:00006A28 ; switch: ROM:00006A28 ; zero - pokemon does ROM:00006A28 ; nonzero - item needs to be switched ROM:00006A28 ; item RXed: ROM:00006A28 ; what sort of thing was RXed: item, map, route, etc ROM:00006A2C mov.w #gCurSubstateA + 1, r1 ; Substate for various modes ROM:00006A2C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006A2C ; ItemScreenHandler: ROM:00006A2C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006A2C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006A2C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006A2C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006A2C ; 0x0010 - light grey pokeball ROM:00006A2C ; 0x0020 - tiny map icon ROM:00006A2C ; 0x0040 - found item #0 (slot nonempty) ROM:00006A2C ; 0x0080 - found item #1 (slot nonempty) ROM:00006A2C ; 0x0100 - found item #2 (slot nonempty) ROM:00006A2C ; 0x0200 - grey item icon ROM:00006A2C ; ItemRXed - what was RXed ROM:00006A2C ; 0 - event pokemon ROM:00006A2C ; 1 - special route ROM:00006A2C ; 2 - item ROM:00006A2C ; 3 - special ROM:00006A2C ; 4 - stamp: heart ROM:00006A2C ; 5 - stamp: spade ROM:00006A2C ; 6 - stamp: diamond ROM:00006A2C ; 7 - stamp: club ROM:00006A2C ; switch: ROM:00006A2C ; zero - pokemon does ROM:00006A2C ; nonzero - item needs to be switched ROM:00006A2C ; item RXed: ROM:00006A2C ; what sort of thing was RXed: item, map, route, etc ROM:00006A30 bclr #0, @er1 ROM:00006A34 bclr #1, @er1 ROM:00006A38 bclr #2, @er1 ROM:00006A3C rts ROM:00006A3C ; End of function someStateVarShuffling ROM:00006A3C ROM:00006A3E ROM:00006A3E ; =============== S U B R O U T I N E ======================================= ROM:00006A3E ROM:00006A3E ROM:00006A3E interactionHandlerHomeScreen: ; CODE XREF: interactionHandler:case_0x00p ROM:00006A3E mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00006A3E ; 0x04 - have walking poke ROM:00006A42 bld #1, r0l ROM:00006A44 bcs loc_6A5E:8 ROM:00006A46 mov.b #2, r0l ROM:00006A48 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006A48 ; // 0x02 - enter ROM:00006A48 ; // 0x04 - left ROM:00006A48 ; // 0x08 - right ROM:00006A4C mov.b r0l, r0l ROM:00006A4E bne loc_6A58:8 ROM:00006A50 mov.b @common_bit_flags:16, r0l ROM:00006A54 bld #5, r0l ROM:00006A56 bcc locret_6AD6:8 ROM:00006A58 ROM:00006A58 loc_6A58: ; CODE XREF: interactionHandlerHomeScreen+10j ROM:00006A58 jsr goToConnectionMicroApp:24 ROM:00006A5C bra locret_6AD6:8 ROM:00006A5E ; --------------------------------------------------------------------------- ROM:00006A5E ROM:00006A5E loc_6A5E: ; CODE XREF: interactionHandlerHomeScreen+6j ROM:00006A5E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006A5E ; battle: ROM:00006A5E ; 0 - battle opening animation ROM:00006A5E ; 1 - "XYZ appeared" message ROM:00006A5E ; 2 - "attack evade catch" directions shown ROM:00006A5E ; 3 - our action taken. details in gCurSubstateF ROM:00006A5E ; 4 - poke action taken. details in gCurSubstateF ROM:00006A5E ; 5 - "was too strong" ROM:00006A5E ; 6 - we lost ROM:00006A5E ; 7 - fled ROM:00006A5E ; 8 - staredown ROM:00006A5E ; 9 - almost had it ROM:00006A5E ; 10 - "threw a pokeball" ROM:00006A5E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006A5E ; 12, 14 - pokeball flying ROM:00006A5E ; 13 - pokeball flying ROM:00006A5E ; 15 - catch animation plays ROM:00006A5E ; 16 - caught! ROM:00006A5E ; switcht: ROM:00006A5E ; cur slected poke name ROM:00006A62 beq loc_6A88:8 ROM:00006A64 mov.b #0xE, r0l ROM:00006A66 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006A66 ; // 0x02 - enter ROM:00006A66 ; // 0x04 - left ROM:00006A66 ; // 0x08 - right ROM:00006A6A mov.b r0l, r0l ROM:00006A6C beq loc_6A7E:8 ROM:00006A6E sub.b r0l, r0l ROM:00006A70 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006A70 ; battle: ROM:00006A70 ; 0 - battle opening animation ROM:00006A70 ; 1 - "XYZ appeared" message ROM:00006A70 ; 2 - "attack evade catch" directions shown ROM:00006A70 ; 3 - our action taken. details in gCurSubstateF ROM:00006A70 ; 4 - poke action taken. details in gCurSubstateF ROM:00006A70 ; 5 - "was too strong" ROM:00006A70 ; 6 - we lost ROM:00006A70 ; 7 - fled ROM:00006A70 ; 8 - staredown ROM:00006A70 ; 9 - almost had it ROM:00006A70 ; 10 - "threw a pokeball" ROM:00006A70 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006A70 ; 12, 14 - pokeball flying ROM:00006A70 ; 13 - pokeball flying ROM:00006A70 ; 15 - catch animation plays ROM:00006A70 ; 16 - caught! ROM:00006A70 ; switcht: ROM:00006A70 ; cur slected poke name ROM:00006A74 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006A74 ; gifted items view: this is item number that has focus and arrow ROM:00006A74 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006A74 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006A74 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006A78 jsr addRandomGift:24 ; (r0l = what) // when poke "randomly" find something ROM:00006A7C bra locret_6AD6:8 ROM:00006A7E ; --------------------------------------------------------------------------- ROM:00006A7E ROM:00006A7E loc_6A7E: ; CODE XREF: interactionHandlerHomeScreen+2Ej ROM:00006A7E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006A7E ; battle: ROM:00006A7E ; 0 - battle opening animation ROM:00006A7E ; 1 - "XYZ appeared" message ROM:00006A7E ; 2 - "attack evade catch" directions shown ROM:00006A7E ; 3 - our action taken. details in gCurSubstateF ROM:00006A7E ; 4 - poke action taken. details in gCurSubstateF ROM:00006A7E ; 5 - "was too strong" ROM:00006A7E ; 6 - we lost ROM:00006A7E ; 7 - fled ROM:00006A7E ; 8 - staredown ROM:00006A7E ; 9 - almost had it ROM:00006A7E ; 10 - "threw a pokeball" ROM:00006A7E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006A7E ; 12, 14 - pokeball flying ROM:00006A7E ; 13 - pokeball flying ROM:00006A7E ; 15 - catch animation plays ROM:00006A7E ; 16 - caught! ROM:00006A7E ; switcht: ROM:00006A7E ; cur slected poke name ROM:00006A82 dec.b r0l ROM:00006A84 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006A84 ; battle: ROM:00006A84 ; 0 - battle opening animation ROM:00006A84 ; 1 - "XYZ appeared" message ROM:00006A84 ; 2 - "attack evade catch" directions shown ROM:00006A84 ; 3 - our action taken. details in gCurSubstateF ROM:00006A84 ; 4 - poke action taken. details in gCurSubstateF ROM:00006A84 ; 5 - "was too strong" ROM:00006A84 ; 6 - we lost ROM:00006A84 ; 7 - fled ROM:00006A84 ; 8 - staredown ROM:00006A84 ; 9 - almost had it ROM:00006A84 ; 10 - "threw a pokeball" ROM:00006A84 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006A84 ; 12, 14 - pokeball flying ROM:00006A84 ; 13 - pokeball flying ROM:00006A84 ; 15 - catch animation plays ROM:00006A84 ; 16 - caught! ROM:00006A84 ; switcht: ROM:00006A84 ; cur slected poke name ROM:00006A88 ROM:00006A88 loc_6A88: ; CODE XREF: interactionHandlerHomeScreen+24j ROM:00006A88 mov.b #2, r0l ROM:00006A8A jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006A8A ; // 0x02 - enter ROM:00006A8A ; // 0x04 - left ROM:00006A8A ; // 0x08 - right ROM:00006A8E mov.b r0l, r0l ROM:00006A90 beq loc_6AA4:8 ROM:00006A92 sub.b r0l, r0l ROM:00006A94 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006A98 jsr clear_gCurSubstateY:24 ROM:00006A9C mov.b #2, r0l ROM:00006A9E mov.b r0l, @menuCurItem:16 ROM:00006AA2 bra loc_6AD0:8 ROM:00006AA4 ; --------------------------------------------------------------------------- ROM:00006AA4 ROM:00006AA4 loc_6AA4: ; CODE XREF: interactionHandlerHomeScreen+52j ROM:00006AA4 mov.b #4, r0l ROM:00006AA6 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006AA6 ; // 0x02 - enter ROM:00006AA6 ; // 0x04 - left ROM:00006AA6 ; // 0x08 - right ROM:00006AAA mov.b r0l, r0l ROM:00006AAC beq loc_6AB8:8 ROM:00006AAE mov.b #5, r0l ROM:00006AB0 mov.b r0l, @menuCurItem:16 ROM:00006AB4 sub.b r0l, r0l ROM:00006AB6 bra loc_6AC8:8 ROM:00006AB8 ; --------------------------------------------------------------------------- ROM:00006AB8 ROM:00006AB8 loc_6AB8: ; CODE XREF: interactionHandlerHomeScreen+6Ej ROM:00006AB8 mov.b #8, r0l ROM:00006ABA jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006ABA ; // 0x02 - enter ROM:00006ABA ; // 0x04 - left ROM:00006ABA ; // 0x08 - right ROM:00006ABE mov.b r0l, r0l ROM:00006AC0 beq locret_6AD6:8 ROM:00006AC2 sub.b r0l, r0l ROM:00006AC4 mov.b r0l, @menuCurItem:16 ROM:00006AC8 ROM:00006AC8 loc_6AC8: ; CODE XREF: interactionHandlerHomeScreen+78j ROM:00006AC8 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006ACC jsr clear_gCurSubstateY:24 ROM:00006AD0 ROM:00006AD0 loc_6AD0: ; CODE XREF: interactionHandlerHomeScreen+64j ROM:00006AD0 mov.b #1, r0l ROM:00006AD2 jsr setCurrentlyActiveView:24 ROM:00006AD6 ROM:00006AD6 locret_6AD6: ; CODE XREF: interactionHandlerHomeScreen+18j ROM:00006AD6 ; interactionHandlerHomeScreen+1Ej ... ROM:00006AD6 rts ROM:00006AD6 ; End of function interactionHandlerHomeScreen ROM:00006AD6 ROM:00006AD8 ROM:00006AD8 ; =============== S U B R O U T I N E ======================================= ROM:00006AD8 ROM:00006AD8 ; (r0l = whichFeeling) ROM:00006AD8 ROM:00006AD8 drawPokemonFeelingBubble: ; CODE XREF: showPokemonFeelingsAndRandomFindings+34p ROM:00006AD8 ; drawHomeScreenMain+12p ROM:00006AD8 mov.b r0l, r5l ROM:00006ADA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006ADE mov.w #0x60, r0 ; '`' ROM:00006AE2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006AE6 mov.w r0, r6 ROM:00006AE8 mov.b r5l, r1l ROM:00006AEA mov.b #0x60, r1h ; '`' ROM:00006AEC mulxu.b r1h, r1 ROM:00006AEE mov.w #0x670, r5 ; 0x670 = large talk bubbles from bottom right with pokemon feeling icon ROM:00006AEE ; (exclamation, heart, music note, smile, neutral face, elipsis) 24x16 each, 6 of them ROM:00006AF2 add.w r1, r5 ROM:00006AF4 mov.w r0, e0 ROM:00006AF6 mov.w r5, r0 ROM:00006AF8 mov.w #0x60, r1 ; '`' ROM:00006AFC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006B00 mov.w r6, e0 ROM:00006B02 mov.w #0x1018, r1 ROM:00006B06 mov.w #0x404, r0 ROM:00006B0A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00006B0E rts ROM:00006B0E ; End of function drawPokemonFeelingBubble ROM:00006B0E ROM:00006B10 ROM:00006B10 ; =============== S U B R O U T I N E ======================================= ROM:00006B10 ROM:00006B10 ROM:00006B10 drawCurrentAreaSmallImage: ; CODE XREF: drawHomeScreenMain:loc_6C0Ep ROM:00006B10 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006B14 mov.w #0xC0, r0 ; '+' ROM:00006B18 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006B1C mov.w r0, r6 ROM:00006B1E mov.b @RamCache_settingsByte:16, r0l ROM:00006B22 bld #0, r0l ROM:00006B24 bcc loc_6B2C:8 ROM:00006B26 mov.w #0xC83C, r5 ; special event area image (if we are on an event route ROM:00006B2A bra loc_6B30:8 ROM:00006B2C ; --------------------------------------------------------------------------- ROM:00006B2C ROM:00006B2C loc_6B2C: ; CODE XREF: drawCurrentAreaSmallImage+14j ROM:00006B2C mov.w #0x8FBE, r5 ; urrent "area" we are strolling in graphic 32x24 ROM:00006B30 ROM:00006B30 loc_6B30: ; CODE XREF: drawCurrentAreaSmallImage+1Aj ROM:00006B30 mov.w r5, r0 ROM:00006B32 mov.w #0xC0, r1 ; '+' ROM:00006B36 mov.w r6, e0 ROM:00006B38 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006B3C mov.w r6, e0 ROM:00006B3E mov.w #0x1820, r1 ROM:00006B42 mov.w #0x1800, r0 ROM:00006B46 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00006B4A rts ROM:00006B4A ; End of function drawCurrentAreaSmallImage ROM:00006B4A ROM:00006B4C ROM:00006B4C ; =============== S U B R O U T I N E ======================================= ROM:00006B4C ROM:00006B4C ROM:00006B4C sub_6B4C: ; CODE XREF: drawHomeScreenMain:loc_6C82p ROM:00006B4C mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00006B4C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B4C ; ItemScreenHandler: ROM:00006B4C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B4C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B4C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B4C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B4C ; 0x0010 - light grey pokeball ROM:00006B4C ; 0x0020 - tiny map icon ROM:00006B4C ; 0x0040 - found item #0 (slot nonempty) ROM:00006B4C ; 0x0080 - found item #1 (slot nonempty) ROM:00006B4C ; 0x0100 - found item #2 (slot nonempty) ROM:00006B4C ; 0x0200 - grey item icon ROM:00006B4C ; ItemRXed - what was RXed ROM:00006B4C ; 0 - event pokemon ROM:00006B4C ; 1 - special route ROM:00006B4C ; 2 - item ROM:00006B4C ; 3 - special ROM:00006B4C ; 4 - stamp: heart ROM:00006B4C ; 5 - stamp: spade ROM:00006B4C ; 6 - stamp: diamond ROM:00006B4C ; 7 - stamp: club ROM:00006B4C ; switch: ROM:00006B4C ; zero - pokemon does ROM:00006B4C ; nonzero - item needs to be switched ROM:00006B4C ; item RXed: ROM:00006B4C ; what sort of thing was RXed: item, map, route, etc ROM:00006B50 bld #2, r0l ROM:00006B52 bcs loc_6B6A:8 ROM:00006B54 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006B54 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B54 ; ItemScreenHandler: ROM:00006B54 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B54 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B54 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B54 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B54 ; 0x0010 - light grey pokeball ROM:00006B54 ; 0x0020 - tiny map icon ROM:00006B54 ; 0x0040 - found item #0 (slot nonempty) ROM:00006B54 ; 0x0080 - found item #1 (slot nonempty) ROM:00006B54 ; 0x0100 - found item #2 (slot nonempty) ROM:00006B54 ; 0x0200 - grey item icon ROM:00006B54 ; ItemRXed - what was RXed ROM:00006B54 ; 0 - event pokemon ROM:00006B54 ; 1 - special route ROM:00006B54 ; 2 - item ROM:00006B54 ; 3 - special ROM:00006B54 ; 4 - stamp: heart ROM:00006B54 ; 5 - stamp: spade ROM:00006B54 ; 6 - stamp: diamond ROM:00006B54 ; 7 - stamp: club ROM:00006B54 ; switch: ROM:00006B54 ; zero - pokemon does ROM:00006B54 ; nonzero - item needs to be switched ROM:00006B54 ; item RXed: ROM:00006B54 ; what sort of thing was RXed: item, map, route, etc ROM:00006B58 add.b #0xFC, r0l ; 'n' ROM:00006B5A mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006B5A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B5A ; ItemScreenHandler: ROM:00006B5A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B5A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B5A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B5A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B5A ; 0x0010 - light grey pokeball ROM:00006B5A ; 0x0020 - tiny map icon ROM:00006B5A ; 0x0040 - found item #0 (slot nonempty) ROM:00006B5A ; 0x0080 - found item #1 (slot nonempty) ROM:00006B5A ; 0x0100 - found item #2 (slot nonempty) ROM:00006B5A ; 0x0200 - grey item icon ROM:00006B5A ; ItemRXed - what was RXed ROM:00006B5A ; 0 - event pokemon ROM:00006B5A ; 1 - special route ROM:00006B5A ; 2 - item ROM:00006B5A ; 3 - special ROM:00006B5A ; 4 - stamp: heart ROM:00006B5A ; 5 - stamp: spade ROM:00006B5A ; 6 - stamp: diamond ROM:00006B5A ; 7 - stamp: club ROM:00006B5A ; switch: ROM:00006B5A ; zero - pokemon does ROM:00006B5A ; nonzero - item needs to be switched ROM:00006B5A ; item RXed: ROM:00006B5A ; what sort of thing was RXed: item, map, route, etc ROM:00006B5E cmp.b #0x20, r0l ; ' ' ROM:00006B60 bhi loc_6B84:8 ROM:00006B62 mov.b #0x20, r0l ; ' ' ROM:00006B64 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006B64 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B64 ; ItemScreenHandler: ROM:00006B64 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B64 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B64 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B64 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B64 ; 0x0010 - light grey pokeball ROM:00006B64 ; 0x0020 - tiny map icon ROM:00006B64 ; 0x0040 - found item #0 (slot nonempty) ROM:00006B64 ; 0x0080 - found item #1 (slot nonempty) ROM:00006B64 ; 0x0100 - found item #2 (slot nonempty) ROM:00006B64 ; 0x0200 - grey item icon ROM:00006B64 ; ItemRXed - what was RXed ROM:00006B64 ; 0 - event pokemon ROM:00006B64 ; 1 - special route ROM:00006B64 ; 2 - item ROM:00006B64 ; 3 - special ROM:00006B64 ; 4 - stamp: heart ROM:00006B64 ; 5 - stamp: spade ROM:00006B64 ; 6 - stamp: diamond ROM:00006B64 ; 7 - stamp: club ROM:00006B64 ; switch: ROM:00006B64 ; zero - pokemon does ROM:00006B64 ; nonzero - item needs to be switched ROM:00006B64 ; item RXed: ROM:00006B64 ; what sort of thing was RXed: item, map, route, etc ROM:00006B68 bra loc_6B84:8 ROM:00006B6A ; --------------------------------------------------------------------------- ROM:00006B6A ROM:00006B6A loc_6B6A: ; CODE XREF: sub_6B4C+6j ROM:00006B6A mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006B6A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B6A ; ItemScreenHandler: ROM:00006B6A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B6A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B6A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B6A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B6A ; 0x0010 - light grey pokeball ROM:00006B6A ; 0x0020 - tiny map icon ROM:00006B6A ; 0x0040 - found item #0 (slot nonempty) ROM:00006B6A ; 0x0080 - found item #1 (slot nonempty) ROM:00006B6A ; 0x0100 - found item #2 (slot nonempty) ROM:00006B6A ; 0x0200 - grey item icon ROM:00006B6A ; ItemRXed - what was RXed ROM:00006B6A ; 0 - event pokemon ROM:00006B6A ; 1 - special route ROM:00006B6A ; 2 - item ROM:00006B6A ; 3 - special ROM:00006B6A ; 4 - stamp: heart ROM:00006B6A ; 5 - stamp: spade ROM:00006B6A ; 6 - stamp: diamond ROM:00006B6A ; 7 - stamp: club ROM:00006B6A ; switch: ROM:00006B6A ; zero - pokemon does ROM:00006B6A ; nonzero - item needs to be switched ROM:00006B6A ; item RXed: ROM:00006B6A ; what sort of thing was RXed: item, map, route, etc ROM:00006B6E add.b #4, r0l ROM:00006B70 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006B70 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B70 ; ItemScreenHandler: ROM:00006B70 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B70 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B70 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B70 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B70 ; 0x0010 - light grey pokeball ROM:00006B70 ; 0x0020 - tiny map icon ROM:00006B70 ; 0x0040 - found item #0 (slot nonempty) ROM:00006B70 ; 0x0080 - found item #1 (slot nonempty) ROM:00006B70 ; 0x0100 - found item #2 (slot nonempty) ROM:00006B70 ; 0x0200 - grey item icon ROM:00006B70 ; ItemRXed - what was RXed ROM:00006B70 ; 0 - event pokemon ROM:00006B70 ; 1 - special route ROM:00006B70 ; 2 - item ROM:00006B70 ; 3 - special ROM:00006B70 ; 4 - stamp: heart ROM:00006B70 ; 5 - stamp: spade ROM:00006B70 ; 6 - stamp: diamond ROM:00006B70 ; 7 - stamp: club ROM:00006B70 ; switch: ROM:00006B70 ; zero - pokemon does ROM:00006B70 ; nonzero - item needs to be switched ROM:00006B70 ; item RXed: ROM:00006B70 ; what sort of thing was RXed: item, map, route, etc ROM:00006B74 cmp.b #0x60, r0l ; '`' ROM:00006B76 bcs loc_6B84:8 ROM:00006B78 mov.w #gCurSubstateA + 1, r0 ; Substate for various modes ROM:00006B78 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B78 ; ItemScreenHandler: ROM:00006B78 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B78 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B78 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B78 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B78 ; 0x0010 - light grey pokeball ROM:00006B78 ; 0x0020 - tiny map icon ROM:00006B78 ; 0x0040 - found item #0 (slot nonempty) ROM:00006B78 ; 0x0080 - found item #1 (slot nonempty) ROM:00006B78 ; 0x0100 - found item #2 (slot nonempty) ROM:00006B78 ; 0x0200 - grey item icon ROM:00006B78 ; ItemRXed - what was RXed ROM:00006B78 ; 0 - event pokemon ROM:00006B78 ; 1 - special route ROM:00006B78 ; 2 - item ROM:00006B78 ; 3 - special ROM:00006B78 ; 4 - stamp: heart ROM:00006B78 ; 5 - stamp: spade ROM:00006B78 ; 6 - stamp: diamond ROM:00006B78 ; 7 - stamp: club ROM:00006B78 ; switch: ROM:00006B78 ; zero - pokemon does ROM:00006B78 ; nonzero - item needs to be switched ROM:00006B78 ; item RXed: ROM:00006B78 ; what sort of thing was RXed: item, map, route, etc ROM:00006B7C bset #1, @er0 ROM:00006B80 bclr #2, @er0 ROM:00006B84 ROM:00006B84 loc_6B84: ; CODE XREF: sub_6B4C+14j ROM:00006B84 ; sub_6B4C+1Cj ... ROM:00006B84 mov.b @common_bit_flags:16, r0l ROM:00006B88 bpl locret_6B9E:8 ROM:00006B8A mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006B8A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B8A ; ItemScreenHandler: ROM:00006B8A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B8A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B8A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B8A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B8A ; 0x0010 - light grey pokeball ROM:00006B8A ; 0x0020 - tiny map icon ROM:00006B8A ; 0x0040 - found item #0 (slot nonempty) ROM:00006B8A ; 0x0080 - found item #1 (slot nonempty) ROM:00006B8A ; 0x0100 - found item #2 (slot nonempty) ROM:00006B8A ; 0x0200 - grey item icon ROM:00006B8A ; ItemRXed - what was RXed ROM:00006B8A ; 0 - event pokemon ROM:00006B8A ; 1 - special route ROM:00006B8A ; 2 - item ROM:00006B8A ; 3 - special ROM:00006B8A ; 4 - stamp: heart ROM:00006B8A ; 5 - stamp: spade ROM:00006B8A ; 6 - stamp: diamond ROM:00006B8A ; 7 - stamp: club ROM:00006B8A ; switch: ROM:00006B8A ; zero - pokemon does ROM:00006B8A ; nonzero - item needs to be switched ROM:00006B8A ; item RXed: ROM:00006B8A ; what sort of thing was RXed: item, map, route, etc ROM:00006B8E cmp.b #0x20, r0l ; ' ' ROM:00006B90 bhi locret_6B9E:8 ROM:00006B92 mov.w #gCurSubstateA + 1, r0 ; Substate for various modes ROM:00006B92 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006B92 ; ItemScreenHandler: ROM:00006B92 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006B92 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006B92 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006B92 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006B92 ; 0x0010 - light grey pokeball ROM:00006B92 ; 0x0020 - tiny map icon ROM:00006B92 ; 0x0040 - found item #0 (slot nonempty) ROM:00006B92 ; 0x0080 - found item #1 (slot nonempty) ROM:00006B92 ; 0x0100 - found item #2 (slot nonempty) ROM:00006B92 ; 0x0200 - grey item icon ROM:00006B92 ; ItemRXed - what was RXed ROM:00006B92 ; 0 - event pokemon ROM:00006B92 ; 1 - special route ROM:00006B92 ; 2 - item ROM:00006B92 ; 3 - special ROM:00006B92 ; 4 - stamp: heart ROM:00006B92 ; 5 - stamp: spade ROM:00006B92 ; 6 - stamp: diamond ROM:00006B92 ; 7 - stamp: club ROM:00006B92 ; switch: ROM:00006B92 ; zero - pokemon does ROM:00006B92 ; nonzero - item needs to be switched ROM:00006B92 ; item RXed: ROM:00006B92 ; what sort of thing was RXed: item, map, route, etc ROM:00006B96 bset #2, @er0 ROM:00006B9A bset #0, @er0 ROM:00006B9E ROM:00006B9E locret_6B9E: ; CODE XREF: sub_6B4C+3Cj ROM:00006B9E ; sub_6B4C+44j ROM:00006B9E rts ROM:00006B9E ; End of function sub_6B4C ROM:00006B9E ROM:00006BA0 ROM:00006BA0 ; =============== S U B R O U T I N E ======================================= ROM:00006BA0 ROM:00006BA0 ROM:00006BA0 sub_6BA0: ; CODE XREF: drawHomeScreenMain+84p ROM:00006BA0 mov.b @curUiFlags:16, r0l ; bits: ROM:00006BA0 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00006BA0 ; 0x02 - slower animation frame ROM:00006BA4 and.b #3, r0l ROM:00006BA6 bne locret_6BF6:8 ROM:00006BA8 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00006BA8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BA8 ; ItemScreenHandler: ROM:00006BA8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BA8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BA8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BA8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BA8 ; 0x0010 - light grey pokeball ROM:00006BA8 ; 0x0020 - tiny map icon ROM:00006BA8 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BA8 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BA8 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BA8 ; 0x0200 - grey item icon ROM:00006BA8 ; ItemRXed - what was RXed ROM:00006BA8 ; 0 - event pokemon ROM:00006BA8 ; 1 - special route ROM:00006BA8 ; 2 - item ROM:00006BA8 ; 3 - special ROM:00006BA8 ; 4 - stamp: heart ROM:00006BA8 ; 5 - stamp: spade ROM:00006BA8 ; 6 - stamp: diamond ROM:00006BA8 ; 7 - stamp: club ROM:00006BA8 ; switch: ROM:00006BA8 ; zero - pokemon does ROM:00006BA8 ; nonzero - item needs to be switched ROM:00006BA8 ; item RXed: ROM:00006BA8 ; what sort of thing was RXed: item, map, route, etc ROM:00006BAC bld #2, r0l ROM:00006BAE bcs loc_6BC2:8 ROM:00006BB0 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006BB0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BB0 ; ItemScreenHandler: ROM:00006BB0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BB0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BB0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BB0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BB0 ; 0x0010 - light grey pokeball ROM:00006BB0 ; 0x0020 - tiny map icon ROM:00006BB0 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BB0 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BB0 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BB0 ; 0x0200 - grey item icon ROM:00006BB0 ; ItemRXed - what was RXed ROM:00006BB0 ; 0 - event pokemon ROM:00006BB0 ; 1 - special route ROM:00006BB0 ; 2 - item ROM:00006BB0 ; 3 - special ROM:00006BB0 ; 4 - stamp: heart ROM:00006BB0 ; 5 - stamp: spade ROM:00006BB0 ; 6 - stamp: diamond ROM:00006BB0 ; 7 - stamp: club ROM:00006BB0 ; switch: ROM:00006BB0 ; zero - pokemon does ROM:00006BB0 ; nonzero - item needs to be switched ROM:00006BB0 ; item RXed: ROM:00006BB0 ; what sort of thing was RXed: item, map, route, etc ROM:00006BB4 add.b #0xFC, r0l ; 'n' ROM:00006BB6 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006BB6 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BB6 ; ItemScreenHandler: ROM:00006BB6 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BB6 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BB6 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BB6 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BB6 ; 0x0010 - light grey pokeball ROM:00006BB6 ; 0x0020 - tiny map icon ROM:00006BB6 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BB6 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BB6 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BB6 ; 0x0200 - grey item icon ROM:00006BB6 ; ItemRXed - what was RXed ROM:00006BB6 ; 0 - event pokemon ROM:00006BB6 ; 1 - special route ROM:00006BB6 ; 2 - item ROM:00006BB6 ; 3 - special ROM:00006BB6 ; 4 - stamp: heart ROM:00006BB6 ; 5 - stamp: spade ROM:00006BB6 ; 6 - stamp: diamond ROM:00006BB6 ; 7 - stamp: club ROM:00006BB6 ; switch: ROM:00006BB6 ; zero - pokemon does ROM:00006BB6 ; nonzero - item needs to be switched ROM:00006BB6 ; item RXed: ROM:00006BB6 ; what sort of thing was RXed: item, map, route, etc ROM:00006BBA cmp.b #0x20, r0l ; ' ' ROM:00006BBC bhi loc_6BDE:8 ROM:00006BBE mov.b #0x20, r0l ; ' ' ROM:00006BC0 bra loc_6BD2:8 ROM:00006BC2 ; --------------------------------------------------------------------------- ROM:00006BC2 ROM:00006BC2 loc_6BC2: ; CODE XREF: sub_6BA0+Ej ROM:00006BC2 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006BC2 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BC2 ; ItemScreenHandler: ROM:00006BC2 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BC2 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BC2 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BC2 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BC2 ; 0x0010 - light grey pokeball ROM:00006BC2 ; 0x0020 - tiny map icon ROM:00006BC2 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BC2 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BC2 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BC2 ; 0x0200 - grey item icon ROM:00006BC2 ; ItemRXed - what was RXed ROM:00006BC2 ; 0 - event pokemon ROM:00006BC2 ; 1 - special route ROM:00006BC2 ; 2 - item ROM:00006BC2 ; 3 - special ROM:00006BC2 ; 4 - stamp: heart ROM:00006BC2 ; 5 - stamp: spade ROM:00006BC2 ; 6 - stamp: diamond ROM:00006BC2 ; 7 - stamp: club ROM:00006BC2 ; switch: ROM:00006BC2 ; zero - pokemon does ROM:00006BC2 ; nonzero - item needs to be switched ROM:00006BC2 ; item RXed: ROM:00006BC2 ; what sort of thing was RXed: item, map, route, etc ROM:00006BC6 add.b #4, r0l ROM:00006BC8 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006BC8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BC8 ; ItemScreenHandler: ROM:00006BC8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BC8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BC8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BC8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BC8 ; 0x0010 - light grey pokeball ROM:00006BC8 ; 0x0020 - tiny map icon ROM:00006BC8 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BC8 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BC8 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BC8 ; 0x0200 - grey item icon ROM:00006BC8 ; ItemRXed - what was RXed ROM:00006BC8 ; 0 - event pokemon ROM:00006BC8 ; 1 - special route ROM:00006BC8 ; 2 - item ROM:00006BC8 ; 3 - special ROM:00006BC8 ; 4 - stamp: heart ROM:00006BC8 ; 5 - stamp: spade ROM:00006BC8 ; 6 - stamp: diamond ROM:00006BC8 ; 7 - stamp: club ROM:00006BC8 ; switch: ROM:00006BC8 ; zero - pokemon does ROM:00006BC8 ; nonzero - item needs to be switched ROM:00006BC8 ; item RXed: ROM:00006BC8 ; what sort of thing was RXed: item, map, route, etc ROM:00006BCC cmp.b #0x40, r0l ; '@' ROM:00006BCE bcs loc_6BDE:8 ROM:00006BD0 mov.b #0x40, r0l ; '@' ROM:00006BD2 ROM:00006BD2 loc_6BD2: ; CODE XREF: sub_6BA0+20j ROM:00006BD2 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006BD2 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BD2 ; ItemScreenHandler: ROM:00006BD2 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BD2 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BD2 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BD2 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BD2 ; 0x0010 - light grey pokeball ROM:00006BD2 ; 0x0020 - tiny map icon ROM:00006BD2 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BD2 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BD2 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BD2 ; 0x0200 - grey item icon ROM:00006BD2 ; ItemRXed - what was RXed ROM:00006BD2 ; 0 - event pokemon ROM:00006BD2 ; 1 - special route ROM:00006BD2 ; 2 - item ROM:00006BD2 ; 3 - special ROM:00006BD2 ; 4 - stamp: heart ROM:00006BD2 ; 5 - stamp: spade ROM:00006BD2 ; 6 - stamp: diamond ROM:00006BD2 ; 7 - stamp: club ROM:00006BD2 ; switch: ROM:00006BD2 ; zero - pokemon does ROM:00006BD2 ; nonzero - item needs to be switched ROM:00006BD2 ; item RXed: ROM:00006BD2 ; what sort of thing was RXed: item, map, route, etc ROM:00006BD6 mov.w #gCurSubstateA + 1, r0 ; Substate for various modes ROM:00006BD6 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BD6 ; ItemScreenHandler: ROM:00006BD6 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BD6 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BD6 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BD6 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BD6 ; 0x0010 - light grey pokeball ROM:00006BD6 ; 0x0020 - tiny map icon ROM:00006BD6 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BD6 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BD6 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BD6 ; 0x0200 - grey item icon ROM:00006BD6 ; ItemRXed - what was RXed ROM:00006BD6 ; 0 - event pokemon ROM:00006BD6 ; 1 - special route ROM:00006BD6 ; 2 - item ROM:00006BD6 ; 3 - special ROM:00006BD6 ; 4 - stamp: heart ROM:00006BD6 ; 5 - stamp: spade ROM:00006BD6 ; 6 - stamp: diamond ROM:00006BD6 ; 7 - stamp: club ROM:00006BD6 ; switch: ROM:00006BD6 ; zero - pokemon does ROM:00006BD6 ; nonzero - item needs to be switched ROM:00006BD6 ; item RXed: ROM:00006BD6 ; what sort of thing was RXed: item, map, route, etc ROM:00006BDA bnot #2, @er0 ROM:00006BDE ROM:00006BDE loc_6BDE: ; CODE XREF: sub_6BA0+1Cj ROM:00006BDE ; sub_6BA0+2Ej ROM:00006BDE mov.b @common_bit_flags:16, r0l ROM:00006BE2 bmi locret_6BF6:8 ROM:00006BE4 mov.b #0x68, r0l ; 'h' ROM:00006BE6 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00006BE6 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BE6 ; ItemScreenHandler: ROM:00006BE6 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BE6 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BE6 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BE6 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BE6 ; 0x0010 - light grey pokeball ROM:00006BE6 ; 0x0020 - tiny map icon ROM:00006BE6 ; 0x0040 - found item #0 (slot nonempty) ROM:00006BE6 ; 0x0080 - found item #1 (slot nonempty) ROM:00006BE6 ; 0x0100 - found item #2 (slot nonempty) ROM:00006BE6 ; 0x0200 - grey item icon ROM:00006BE6 ; ItemRXed - what was RXed ROM:00006BE6 ; 0 - event pokemon ROM:00006BE6 ; 1 - special route ROM:00006BE6 ; 2 - item ROM:00006BE6 ; 3 - special ROM:00006BE6 ; 4 - stamp: heart ROM:00006BE6 ; 5 - stamp: spade ROM:00006BE6 ; 6 - stamp: diamond ROM:00006BE6 ; 7 - stamp: club ROM:00006BE6 ; switch: ROM:00006BE6 ; zero - pokemon does ROM:00006BE6 ; nonzero - item needs to be switched ROM:00006BE6 ; item RXed: ROM:00006BE6 ; what sort of thing was RXed: item, map, route, etc ROM:00006BEA mov.w #gCurSubstateA + 1, r0 ; Substate for various modes ROM:00006BEA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006BEA ; ItemScreenHandler: ROM:00006BEA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006BEA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006BEA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006BEA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006BEA ; 0x0010 - light grey pokeball ROM:00006BEA ; 0x0020 - tiny map icon ROM:00006BEA ; 0x0040 - found item #0 (slot nonempty) ROM:00006BEA ; 0x0080 - found item #1 (slot nonempty) ROM:00006BEA ; 0x0100 - found item #2 (slot nonempty) ROM:00006BEA ; 0x0200 - grey item icon ROM:00006BEA ; ItemRXed - what was RXed ROM:00006BEA ; 0 - event pokemon ROM:00006BEA ; 1 - special route ROM:00006BEA ; 2 - item ROM:00006BEA ; 3 - special ROM:00006BEA ; 4 - stamp: heart ROM:00006BEA ; 5 - stamp: spade ROM:00006BEA ; 6 - stamp: diamond ROM:00006BEA ; 7 - stamp: club ROM:00006BEA ; switch: ROM:00006BEA ; zero - pokemon does ROM:00006BEA ; nonzero - item needs to be switched ROM:00006BEA ; item RXed: ROM:00006BEA ; what sort of thing was RXed: item, map, route, etc ROM:00006BEE bclr #1, @er0 ROM:00006BF2 bclr #2, @er0 ROM:00006BF6 ROM:00006BF6 locret_6BF6: ; CODE XREF: sub_6BA0+6j ROM:00006BF6 ; sub_6BA0+42j ROM:00006BF6 rts ROM:00006BF6 ; End of function sub_6BA0 ROM:00006BF6 ROM:00006BF8 ROM:00006BF8 ; =============== S U B R O U T I N E ======================================= ROM:00006BF8 ROM:00006BF8 ROM:00006BF8 drawHomeScreenMain: ; CODE XREF: maybe_viewDoDisplay:pokewalker_is_initedp ROM:00006BF8 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006BF8 ; battle: ROM:00006BF8 ; 0 - battle opening animation ROM:00006BF8 ; 1 - "XYZ appeared" message ROM:00006BF8 ; 2 - "attack evade catch" directions shown ROM:00006BF8 ; 3 - our action taken. details in gCurSubstateF ROM:00006BF8 ; 4 - poke action taken. details in gCurSubstateF ROM:00006BF8 ; 5 - "was too strong" ROM:00006BF8 ; 6 - we lost ROM:00006BF8 ; 7 - fled ROM:00006BF8 ; 8 - staredown ROM:00006BF8 ; 9 - almost had it ROM:00006BF8 ; 10 - "threw a pokeball" ROM:00006BF8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006BF8 ; 12, 14 - pokeball flying ROM:00006BF8 ; 13 - pokeball flying ROM:00006BF8 ; 15 - catch animation plays ROM:00006BF8 ; 16 - caught! ROM:00006BF8 ; switcht: ROM:00006BF8 ; cur slected poke name ROM:00006BFC beq loc_6C0E:8 ROM:00006BFE mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006BFE ; gifted items view: this is item number that has focus and arrow ROM:00006BFE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006BFE ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006BFE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006C02 extu.w r0 ROM:00006C04 dec.w #1, r0 ROM:00006C06 mov.b @(INDEX_TO_FEELING_IMAGE_MAP,er0), r0l ROM:00006C0A jsr drawPokemonFeelingBubble:24 ; (r0l = whichFeeling) ROM:00006C0E ROM:00006C0E loc_6C0E: ; CODE XREF: drawHomeScreenMain+4j ROM:00006C0E jsr drawCurrentAreaSmallImage:24 ROM:00006C12 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00006C12 ; 0x04 - have walking poke ROM:00006C16 bld #2, r0l ROM:00006C18 bcc locret_6C86:8 ROM:00006C1A mov.b @gCurSubstateA:16, r6l ; Substate for various modes ROM:00006C1A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006C1A ; ItemScreenHandler: ROM:00006C1A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006C1A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006C1A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006C1A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006C1A ; 0x0010 - light grey pokeball ROM:00006C1A ; 0x0020 - tiny map icon ROM:00006C1A ; 0x0040 - found item #0 (slot nonempty) ROM:00006C1A ; 0x0080 - found item #1 (slot nonempty) ROM:00006C1A ; 0x0100 - found item #2 (slot nonempty) ROM:00006C1A ; 0x0200 - grey item icon ROM:00006C1A ; ItemRXed - what was RXed ROM:00006C1A ; 0 - event pokemon ROM:00006C1A ; 1 - special route ROM:00006C1A ; 2 - item ROM:00006C1A ; 3 - special ROM:00006C1A ; 4 - stamp: heart ROM:00006C1A ; 5 - stamp: spade ROM:00006C1A ; 6 - stamp: diamond ROM:00006C1A ; 7 - stamp: club ROM:00006C1A ; switch: ROM:00006C1A ; zero - pokemon does ROM:00006C1A ; nonzero - item needs to be switched ROM:00006C1A ; item RXed: ROM:00006C1A ; what sort of thing was RXed: item, map, route, etc ROM:00006C1E mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00006C1E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006C1E ; ItemScreenHandler: ROM:00006C1E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006C1E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006C1E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006C1E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006C1E ; 0x0010 - light grey pokeball ROM:00006C1E ; 0x0020 - tiny map icon ROM:00006C1E ; 0x0040 - found item #0 (slot nonempty) ROM:00006C1E ; 0x0080 - found item #1 (slot nonempty) ROM:00006C1E ; 0x0100 - found item #2 (slot nonempty) ROM:00006C1E ; 0x0200 - grey item icon ROM:00006C1E ; ItemRXed - what was RXed ROM:00006C1E ; 0 - event pokemon ROM:00006C1E ; 1 - special route ROM:00006C1E ; 2 - item ROM:00006C1E ; 3 - special ROM:00006C1E ; 4 - stamp: heart ROM:00006C1E ; 5 - stamp: spade ROM:00006C1E ; 6 - stamp: diamond ROM:00006C1E ; 7 - stamp: club ROM:00006C1E ; switch: ROM:00006C1E ; zero - pokemon does ROM:00006C1E ; nonzero - item needs to be switched ROM:00006C1E ; item RXed: ROM:00006C1E ; what sort of thing was RXed: item, map, route, etc ROM:00006C22 bld #1, r0l ROM:00006C24 bcs loc_6C30:8 ROM:00006C26 mov.b r6l, r0l ROM:00006C28 sub.b r0h, r0h ROM:00006C2A jsr homeScreenDrawLargeCurrentPokemonImage:24 ; (r0l = x, r0h = y) ROM:00006C2E bra loc_6C74:8 ROM:00006C30 ; --------------------------------------------------------------------------- ROM:00006C30 ROM:00006C30 loc_6C30: ; CODE XREF: drawHomeScreenMain+2Cj ROM:00006C30 bld #2, r0l ROM:00006C32 bcs loc_6C3A:8 ROM:00006C34 mov.b r6l, r0l ROM:00006C36 mov.b #0x18, r0h ROM:00006C38 bra loc_6C70:8 ROM:00006C3A ; --------------------------------------------------------------------------- ROM:00006C3A ROM:00006C3A loc_6C3A: ; CODE XREF: drawHomeScreenMain+3Aj ROM:00006C3A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006C3E mov.w #0x10, r0 ROM:00006C42 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006C46 mov.w r0, r6 ROM:00006C48 mov.w r0, e0 ROM:00006C4A mov.w #0x8F00, r0 ROM:00006C4E mov.w #0x10, r1 ROM:00006C52 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006C56 mov.b @(0xE:16,er6), r0l ROM:00006C5A bld #0, r0l ROM:00006C5C bcs loc_6C6A:8 ROM:00006C5E mov.b #0x18, r0h ROM:00006C60 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006C60 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006C60 ; ItemScreenHandler: ROM:00006C60 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006C60 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006C60 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006C60 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006C60 ; 0x0010 - light grey pokeball ROM:00006C60 ; 0x0020 - tiny map icon ROM:00006C60 ; 0x0040 - found item #0 (slot nonempty) ROM:00006C60 ; 0x0080 - found item #1 (slot nonempty) ROM:00006C60 ; 0x0100 - found item #2 (slot nonempty) ROM:00006C60 ; 0x0200 - grey item icon ROM:00006C60 ; ItemRXed - what was RXed ROM:00006C60 ; 0 - event pokemon ROM:00006C60 ; 1 - special route ROM:00006C60 ; 2 - item ROM:00006C60 ; 3 - special ROM:00006C60 ; 4 - stamp: heart ROM:00006C60 ; 5 - stamp: spade ROM:00006C60 ; 6 - stamp: diamond ROM:00006C60 ; 7 - stamp: club ROM:00006C60 ; switch: ROM:00006C60 ; zero - pokemon does ROM:00006C60 ; nonzero - item needs to be switched ROM:00006C60 ; item RXed: ROM:00006C60 ; what sort of thing was RXed: item, map, route, etc ROM:00006C64 jsr drawCurPokemonSmallAnimatedFrameHorizFlipped:24 ; (r0l = x, r0h = y) ROM:00006C68 bra loc_6C74:8 ROM:00006C6A ; --------------------------------------------------------------------------- ROM:00006C6A ROM:00006C6A loc_6C6A: ; CODE XREF: drawHomeScreenMain+64j ROM:00006C6A mov.b #0x18, r0h ROM:00006C6C mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00006C6C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006C6C ; ItemScreenHandler: ROM:00006C6C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006C6C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006C6C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006C6C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006C6C ; 0x0010 - light grey pokeball ROM:00006C6C ; 0x0020 - tiny map icon ROM:00006C6C ; 0x0040 - found item #0 (slot nonempty) ROM:00006C6C ; 0x0080 - found item #1 (slot nonempty) ROM:00006C6C ; 0x0100 - found item #2 (slot nonempty) ROM:00006C6C ; 0x0200 - grey item icon ROM:00006C6C ; ItemRXed - what was RXed ROM:00006C6C ; 0 - event pokemon ROM:00006C6C ; 1 - special route ROM:00006C6C ; 2 - item ROM:00006C6C ; 3 - special ROM:00006C6C ; 4 - stamp: heart ROM:00006C6C ; 5 - stamp: spade ROM:00006C6C ; 6 - stamp: diamond ROM:00006C6C ; 7 - stamp: club ROM:00006C6C ; switch: ROM:00006C6C ; zero - pokemon does ROM:00006C6C ; nonzero - item needs to be switched ROM:00006C6C ; item RXed: ROM:00006C6C ; what sort of thing was RXed: item, map, route, etc ROM:00006C70 ROM:00006C70 loc_6C70: ; CODE XREF: drawHomeScreenMain+40j ROM:00006C70 jsr drawCurPokemonSmallAnimatedFrame:24 ; (r0l = x, r0h = y) ROM:00006C74 ROM:00006C74 loc_6C74: ; CODE XREF: drawHomeScreenMain+36j ROM:00006C74 ; drawHomeScreenMain+70j ROM:00006C74 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00006C74 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00006C74 ; ItemScreenHandler: ROM:00006C74 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00006C74 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00006C74 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00006C74 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00006C74 ; 0x0010 - light grey pokeball ROM:00006C74 ; 0x0020 - tiny map icon ROM:00006C74 ; 0x0040 - found item #0 (slot nonempty) ROM:00006C74 ; 0x0080 - found item #1 (slot nonempty) ROM:00006C74 ; 0x0100 - found item #2 (slot nonempty) ROM:00006C74 ; 0x0200 - grey item icon ROM:00006C74 ; ItemRXed - what was RXed ROM:00006C74 ; 0 - event pokemon ROM:00006C74 ; 1 - special route ROM:00006C74 ; 2 - item ROM:00006C74 ; 3 - special ROM:00006C74 ; 4 - stamp: heart ROM:00006C74 ; 5 - stamp: spade ROM:00006C74 ; 6 - stamp: diamond ROM:00006C74 ; 7 - stamp: club ROM:00006C74 ; switch: ROM:00006C74 ; zero - pokemon does ROM:00006C74 ; nonzero - item needs to be switched ROM:00006C74 ; item RXed: ROM:00006C74 ; what sort of thing was RXed: item, map, route, etc ROM:00006C78 bld #1, r0l ROM:00006C7A bcc loc_6C82:8 ROM:00006C7C jsr sub_6BA0:24 ROM:00006C80 bra locret_6C86:8 ROM:00006C82 ; --------------------------------------------------------------------------- ROM:00006C82 ROM:00006C82 loc_6C82: ; CODE XREF: drawHomeScreenMain+82j ROM:00006C82 jsr sub_6B4C:24 ROM:00006C86 ROM:00006C86 locret_6C86: ; CODE XREF: drawHomeScreenMain+20j ROM:00006C86 ; drawHomeScreenMain+88j ROM:00006C86 rts ROM:00006C86 ; End of function drawHomeScreenMain ROM:00006C86 ROM:00006C88 ROM:00006C88 ; =============== S U B R O U T I N E ======================================= ROM:00006C88 ROM:00006C88 ROM:00006C88 sub_6C88: ; CODE XREF: interactionHAndlerMainMenu:case__5p ROM:00006C88 sub.b r0l, r0l ROM:00006C8A mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00006C8A ; gifted items view: this is item number that has focus and arrow ROM:00006C8A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006C8A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006C8A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006C8E mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006C8E ; battle: ROM:00006C8E ; 0 - battle opening animation ROM:00006C8E ; 1 - "XYZ appeared" message ROM:00006C8E ; 2 - "attack evade catch" directions shown ROM:00006C8E ; 3 - our action taken. details in gCurSubstateF ROM:00006C8E ; 4 - poke action taken. details in gCurSubstateF ROM:00006C8E ; 5 - "was too strong" ROM:00006C8E ; 6 - we lost ROM:00006C8E ; 7 - fled ROM:00006C8E ; 8 - staredown ROM:00006C8E ; 9 - almost had it ROM:00006C8E ; 10 - "threw a pokeball" ROM:00006C8E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006C8E ; 12, 14 - pokeball flying ROM:00006C8E ; 13 - pokeball flying ROM:00006C8E ; 15 - catch animation plays ROM:00006C8E ; 16 - caught! ROM:00006C8E ; switcht: ROM:00006C8E ; cur slected poke name ROM:00006C92 rts ROM:00006C92 ; End of function sub_6C88 ROM:00006C92 ROM:00006C94 ROM:00006C94 ; =============== S U B R O U T I N E ======================================= ROM:00006C94 ROM:00006C94 ROM:00006C94 sub_6C94: ; CODE XREF: interactionHandlerSettings:loc_6E0Cp ROM:00006C94 mov.b #4, r0l ROM:00006C96 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006C96 ; // 0x02 - enter ROM:00006C96 ; // 0x04 - left ROM:00006C96 ; // 0x08 - right ROM:00006C9A mov.b r0l, r0l ROM:00006C9C beq loc_6CC2:8 ROM:00006C9E mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006C9E ; battle: ROM:00006C9E ; 0 - battle opening animation ROM:00006C9E ; 1 - "XYZ appeared" message ROM:00006C9E ; 2 - "attack evade catch" directions shown ROM:00006C9E ; 3 - our action taken. details in gCurSubstateF ROM:00006C9E ; 4 - poke action taken. details in gCurSubstateF ROM:00006C9E ; 5 - "was too strong" ROM:00006C9E ; 6 - we lost ROM:00006C9E ; 7 - fled ROM:00006C9E ; 8 - staredown ROM:00006C9E ; 9 - almost had it ROM:00006C9E ; 10 - "threw a pokeball" ROM:00006C9E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006C9E ; 12, 14 - pokeball flying ROM:00006C9E ; 13 - pokeball flying ROM:00006C9E ; 15 - catch animation plays ROM:00006C9E ; 16 - caught! ROM:00006C9E ; switcht: ROM:00006C9E ; cur slected poke name ROM:00006CA2 bne loc_6CB6:8 ROM:00006CA4 mov.b #1, r0l ROM:00006CA6 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006CAA jsr clear_gCurSubstateY:24 ROM:00006CAE mov.b #1, r0l ROM:00006CB0 jsr setCurrentlyActiveView:24 ROM:00006CB4 bra locret_6CE0:8 ROM:00006CB6 ; --------------------------------------------------------------------------- ROM:00006CB6 ROM:00006CB6 loc_6CB6: ; CODE XREF: sub_6C94+Ej ROM:00006CB6 sub.b r0l, r0l ROM:00006CB8 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006CB8 ; battle: ROM:00006CB8 ; 0 - battle opening animation ROM:00006CB8 ; 1 - "XYZ appeared" message ROM:00006CB8 ; 2 - "attack evade catch" directions shown ROM:00006CB8 ; 3 - our action taken. details in gCurSubstateF ROM:00006CB8 ; 4 - poke action taken. details in gCurSubstateF ROM:00006CB8 ; 5 - "was too strong" ROM:00006CB8 ; 6 - we lost ROM:00006CB8 ; 7 - fled ROM:00006CB8 ; 8 - staredown ROM:00006CB8 ; 9 - almost had it ROM:00006CB8 ; 10 - "threw a pokeball" ROM:00006CB8 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006CB8 ; 12, 14 - pokeball flying ROM:00006CB8 ; 13 - pokeball flying ROM:00006CB8 ; 15 - catch animation plays ROM:00006CB8 ; 16 - caught! ROM:00006CB8 ; switcht: ROM:00006CB8 ; cur slected poke name ROM:00006CBC mov.b #2, r0l ROM:00006CBE jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006CC2 ROM:00006CC2 loc_6CC2: ; CODE XREF: sub_6C94+8j ROM:00006CC2 mov.b #8, r0l ROM:00006CC4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006CC4 ; // 0x02 - enter ROM:00006CC4 ; // 0x04 - left ROM:00006CC4 ; // 0x08 - right ROM:00006CC8 mov.b r0l, r0l ROM:00006CCA beq locret_6CE0:8 ROM:00006CCC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006CCC ; battle: ROM:00006CCC ; 0 - battle opening animation ROM:00006CCC ; 1 - "XYZ appeared" message ROM:00006CCC ; 2 - "attack evade catch" directions shown ROM:00006CCC ; 3 - our action taken. details in gCurSubstateF ROM:00006CCC ; 4 - poke action taken. details in gCurSubstateF ROM:00006CCC ; 5 - "was too strong" ROM:00006CCC ; 6 - we lost ROM:00006CCC ; 7 - fled ROM:00006CCC ; 8 - staredown ROM:00006CCC ; 9 - almost had it ROM:00006CCC ; 10 - "threw a pokeball" ROM:00006CCC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006CCC ; 12, 14 - pokeball flying ROM:00006CCC ; 13 - pokeball flying ROM:00006CCC ; 15 - catch animation plays ROM:00006CCC ; 16 - caught! ROM:00006CCC ; switcht: ROM:00006CCC ; cur slected poke name ROM:00006CD0 cmp.b #1, r0l ROM:00006CD2 beq locret_6CE0:8 ROM:00006CD4 mov.b #1, r0l ROM:00006CD6 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00006CD6 ; battle: ROM:00006CD6 ; 0 - battle opening animation ROM:00006CD6 ; 1 - "XYZ appeared" message ROM:00006CD6 ; 2 - "attack evade catch" directions shown ROM:00006CD6 ; 3 - our action taken. details in gCurSubstateF ROM:00006CD6 ; 4 - poke action taken. details in gCurSubstateF ROM:00006CD6 ; 5 - "was too strong" ROM:00006CD6 ; 6 - we lost ROM:00006CD6 ; 7 - fled ROM:00006CD6 ; 8 - staredown ROM:00006CD6 ; 9 - almost had it ROM:00006CD6 ; 10 - "threw a pokeball" ROM:00006CD6 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006CD6 ; 12, 14 - pokeball flying ROM:00006CD6 ; 13 - pokeball flying ROM:00006CD6 ; 15 - catch animation plays ROM:00006CD6 ; 16 - caught! ROM:00006CD6 ; switcht: ROM:00006CD6 ; cur slected poke name ROM:00006CDA mov.b #2, r0l ROM:00006CDC jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006CE0 ROM:00006CE0 locret_6CE0: ; CODE XREF: sub_6C94+20j ROM:00006CE0 ; sub_6C94+36j ... ROM:00006CE0 rts ROM:00006CE0 ; End of function sub_6C94 ROM:00006CE0 ROM:00006CE2 ROM:00006CE2 ; =============== S U B R O U T I N E ======================================= ROM:00006CE2 ROM:00006CE2 ROM:00006CE2 sub_6CE2: ; CODE XREF: interactionHandlerSettings:loc_6E12p ROM:00006CE2 mov.b #4, r0l ROM:00006CE4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006CE4 ; // 0x02 - enter ROM:00006CE4 ; // 0x04 - left ROM:00006CE4 ; // 0x08 - right ROM:00006CE8 mov.b r0l, r0l ROM:00006CEA beq loc_6D26:8 ROM:00006CEC mov.b @RamCache_settingsByte:16, r0l ROM:00006CF0 shlr.b r0l ROM:00006CF2 and.b #3, r0l ROM:00006CF4 extu.w r0 ROM:00006CF6 inc.w #2, r0 ROM:00006CF8 exts.l er0 ROM:00006CFA mov.w #3, r1 ROM:00006CFE divxs.w r1, er0 ROM:00006D02 mov.w e0, r0 ROM:00006D04 mov.b r0l, r1l ROM:00006D06 mov.w #RamCache_settingsByte, r0 ROM:00006D0A mov.w #0x502, r2 ROM:00006D0E jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00006D12 mov.b @RamCache_settingsByte:16, r0h ROM:00006D16 shlr.b r0h ROM:00006D18 and.b #3, r0h ROM:00006D1A mov.b r0h, r0l ROM:00006D1C jsr likelysetVolume:24 ROM:00006D20 mov.b #2, r0l ROM:00006D22 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006D26 ROM:00006D26 loc_6D26: ; CODE XREF: sub_6CE2+8j ROM:00006D26 mov.b #8, r0l ROM:00006D28 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006D28 ; // 0x02 - enter ROM:00006D28 ; // 0x04 - left ROM:00006D28 ; // 0x08 - right ROM:00006D2C mov.b r0l, r0l ROM:00006D2E beq locret_6D6A:8 ROM:00006D30 mov.b @RamCache_settingsByte:16, r0l ROM:00006D34 shlr.b r0l ROM:00006D36 and.b #3, r0l ROM:00006D38 extu.w r0 ROM:00006D3A inc.w #1, r0 ROM:00006D3C exts.l er0 ROM:00006D3E mov.w #3, r1 ROM:00006D42 divxs.w r1, er0 ROM:00006D46 mov.w e0, r0 ROM:00006D48 mov.b r0l, r1l ROM:00006D4A mov.w #RamCache_settingsByte, r0 ROM:00006D4E mov.w #0x502, r2 ROM:00006D52 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00006D56 mov.b @RamCache_settingsByte:16, r0h ROM:00006D5A shlr.b r0h ROM:00006D5C and.b #3, r0h ROM:00006D5E mov.b r0h, r0l ROM:00006D60 jsr likelysetVolume:24 ROM:00006D64 mov.b #2, r0l ROM:00006D66 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006D6A ROM:00006D6A locret_6D6A: ; CODE XREF: sub_6CE2+4Cj ROM:00006D6A rts ROM:00006D6A ; End of function sub_6CE2 ROM:00006D6A ROM:00006D6C ROM:00006D6C ; =============== S U B R O U T I N E ======================================= ROM:00006D6C ROM:00006D6C ROM:00006D6C sub_6D6C: ; CODE XREF: interactionHandlerSettings:loc_6E18p ROM:00006D6C mov.b #4, r0l ROM:00006D6E jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006D6E ; // 0x02 - enter ROM:00006D6E ; // 0x04 - left ROM:00006D6E ; // 0x08 - right ROM:00006D72 mov.b r0l, r0l ROM:00006D74 beq loc_6DB2:8 ROM:00006D76 mov.b @RamCache_settingsByte:16, r0l ROM:00006D7A and.b #0x78, r0l ROM:00006D7C beq loc_6DA0:8 ROM:00006D7E mov.b @RamCache_settingsByte:16, r0l ROM:00006D82 shlr.b r0l ROM:00006D84 shlr.b r0l ROM:00006D86 shlr.b r0l ROM:00006D88 and.b #0xF, r0l ROM:00006D8A dec.b r0l ROM:00006D8C mov.b r0l, r1l ROM:00006D8E mov.w #RamCache_settingsByte, r0 ROM:00006D92 mov.w #0x104, r2 ROM:00006D96 jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00006D9A mov.b #2, r0l ROM:00006D9C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006DA0 ROM:00006DA0 loc_6DA0: ; CODE XREF: sub_6D6C+10j ROM:00006DA0 mov.b @RamCache_settingsByte:16, r0h ROM:00006DA4 shlr.b r0h ROM:00006DA6 shlr.b r0h ROM:00006DA8 shlr.b r0h ROM:00006DAA and.b #0xF, r0h ROM:00006DAC mov.b r0h, r0l ROM:00006DAE jsr lcdSetContrast:24 ; (u8 contrast) //incremented y base_contrast_value ROM:00006DB2 ROM:00006DB2 loc_6DB2: ; CODE XREF: sub_6D6C+8j ROM:00006DB2 mov.b #8, r0l ROM:00006DB4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006DB4 ; // 0x02 - enter ROM:00006DB4 ; // 0x04 - left ROM:00006DB4 ; // 0x08 - right ROM:00006DB8 mov.b r0l, r0l ROM:00006DBA beq locret_6DFA:8 ROM:00006DBC mov.b @RamCache_settingsByte:16, r0l ROM:00006DC0 and.b #0x78, r0l ROM:00006DC2 cmp.b #0x48, r0l ; 'H' ROM:00006DC4 bcc loc_6DE8:8 ROM:00006DC6 mov.b @RamCache_settingsByte:16, r0l ROM:00006DCA shlr.b r0l ROM:00006DCC shlr.b r0l ROM:00006DCE shlr.b r0l ROM:00006DD0 and.b #0xF, r0l ROM:00006DD2 inc.b r0l ROM:00006DD4 mov.b r0l, r1l ROM:00006DD6 mov.w #RamCache_settingsByte, r0 ROM:00006DDA mov.w #0x104, r2 ROM:00006DDE jsr bitfieldInsert:24 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:00006DE2 mov.b #2, r0l ROM:00006DE4 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006DE8 ROM:00006DE8 loc_6DE8: ; CODE XREF: sub_6D6C+58j ROM:00006DE8 mov.b @RamCache_settingsByte:16, r0h ROM:00006DEC shlr.b r0h ROM:00006DEE shlr.b r0h ROM:00006DF0 shlr.b r0h ROM:00006DF2 and.b #0xF, r0h ROM:00006DF4 mov.b r0h, r0l ROM:00006DF6 jsr lcdSetContrast:24 ; (u8 contrast) //incremented y base_contrast_value ROM:00006DFA ROM:00006DFA locret_6DFA: ; CODE XREF: sub_6D6C+4Ej ROM:00006DFA rts ROM:00006DFA ; End of function sub_6D6C ROM:00006DFA ROM:00006DFC ROM:00006DFC ; =============== S U B R O U T I N E ======================================= ROM:00006DFC ROM:00006DFC ROM:00006DFC interactionHandlerSettings: ; CODE XREF: interactionHandler:case_0x09p ROM:00006DFC mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006DFC ; gifted items view: this is item number that has focus and arrow ROM:00006DFC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006DFC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006DFC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006E00 beq loc_6E0C:8 ROM:00006E02 cmp.b #1, r0l ROM:00006E04 beq loc_6E12:8 ROM:00006E06 cmp.b #2, r0l ROM:00006E08 bne loc_6E1C:8 ROM:00006E0A bra loc_6E18:8 ROM:00006E0C ; --------------------------------------------------------------------------- ROM:00006E0C ROM:00006E0C loc_6E0C: ; CODE XREF: interactionHandlerSettings+4j ROM:00006E0C jsr sub_6C94:24 ROM:00006E10 bra loc_6E1C:8 ROM:00006E12 ; --------------------------------------------------------------------------- ROM:00006E12 ROM:00006E12 loc_6E12: ; CODE XREF: interactionHandlerSettings+8j ROM:00006E12 jsr sub_6CE2:24 ROM:00006E16 bra loc_6E1C:8 ROM:00006E18 ; --------------------------------------------------------------------------- ROM:00006E18 ROM:00006E18 loc_6E18: ; CODE XREF: interactionHandlerSettings+Ej ROM:00006E18 jsr sub_6D6C:24 ROM:00006E1C ROM:00006E1C loc_6E1C: ; CODE XREF: interactionHandlerSettings+Cj ROM:00006E1C ; interactionHandlerSettings+14j ... ROM:00006E1C mov.b #2, r0l ROM:00006E1E jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00006E1E ; // 0x02 - enter ROM:00006E1E ; // 0x04 - left ROM:00006E1E ; // 0x08 - right ROM:00006E22 mov.b r0l, r0l ROM:00006E24 beq locret_6E60:8 ROM:00006E26 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006E26 ; gifted items view: this is item number that has focus and arrow ROM:00006E26 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006E26 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006E26 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006E2A bne loc_6E3E:8 ROM:00006E2C sub.b r0l, r0l ROM:00006E2E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006E32 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006E32 ; battle: ROM:00006E32 ; 0 - battle opening animation ROM:00006E32 ; 1 - "XYZ appeared" message ROM:00006E32 ; 2 - "attack evade catch" directions shown ROM:00006E32 ; 3 - our action taken. details in gCurSubstateF ROM:00006E32 ; 4 - poke action taken. details in gCurSubstateF ROM:00006E32 ; 5 - "was too strong" ROM:00006E32 ; 6 - we lost ROM:00006E32 ; 7 - fled ROM:00006E32 ; 8 - staredown ROM:00006E32 ; 9 - almost had it ROM:00006E32 ; 10 - "threw a pokeball" ROM:00006E32 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006E32 ; 12, 14 - pokeball flying ROM:00006E32 ; 13 - pokeball flying ROM:00006E32 ; 15 - catch animation plays ROM:00006E32 ; 16 - caught! ROM:00006E32 ; switcht: ROM:00006E32 ; cur slected poke name ROM:00006E36 add.b #1, r0l ROM:00006E38 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00006E38 ; gifted items view: this is item number that has focus and arrow ROM:00006E38 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006E38 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006E38 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006E3C bra locret_6E60:8 ROM:00006E3E ; --------------------------------------------------------------------------- ROM:00006E3E ROM:00006E3E loc_6E3E: ; CODE XREF: interactionHandlerSettings+2Ej ROM:00006E3E sub.b r0l, r0l ROM:00006E40 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00006E44 jsr someStateVarShuffling:24 ROM:00006E48 sub.b r0l, r0l ROM:00006E4A jsr setCurrentlyActiveView:24 ROM:00006E4E mov.w #0x18, e1 ROM:00006E52 mov.w #RamCache_totalSteps, r1 ROM:00006E56 mov.l #0x2560156, er0 ROM:00006E5C jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:00006E5C ; ROM:00006E5C ; see docs for readRedundantDataFromEeprom for format info ROM:00006E60 ROM:00006E60 locret_6E60: ; CODE XREF: interactionHandlerSettings+28j ROM:00006E60 ; interactionHandlerSettings+40j ROM:00006E60 rts ROM:00006E60 ; End of function interactionHandlerSettings ROM:00006E60 ROM:00006E62 ROM:00006E62 ; =============== S U B R O U T I N E ======================================= ROM:00006E62 ROM:00006E62 ROM:00006E62 drawSettingsScreen: ; CODE XREF: maybe_viewDoDisplay:case__0x09p ROM:00006E62 val_0x280 = r4 ROM:00006E62 mov.w #eepromReadToRamAlso, r3 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00006E66 mov.w #0x280, val_0x280 ROM:00006E6A mov.w #drawImageToScreen, r5 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00006E6E jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00006E72 mov.w #0x140, r0 ROM:00006E76 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00006E7A mov.w r0, r6 ROM:00006E7C mov.w #0xCD0, e6 ROM:00006E80 add.w val_0x280, e6 ; 0x0F50 = "SETTINGS menu heading in box ROM:00006E82 mov.w r0, e0 ROM:00006E84 mov.w e6, r0 ROM:00006E86 mov.w #0x140, r1 ROM:00006E8A jsr @er3 ; eepromReadToRamAlso() ROM:00006E8C mov.w r6, e0 ROM:00006E8E mov.w #0x1050, r1 ROM:00006E92 mov.w #8, r0 ROM:00006E96 jsr @er5 ; drawImageToScreen() ROM:00006E98 mov.w #0x1410, e6 ROM:00006E9C add.w val_0x280, e6 ; 0x1690 = "sound" in frame for settings screen ROM:00006E9E mov.w e6, r0 ROM:00006EA0 mov.w #0xA0, r1 ; 'á' ROM:00006EA4 mov.w r6, e0 ROM:00006EA6 jsr @er3 ; eepromReadToRamAlso() ROM:00006EA8 mov.w r6, e0 ROM:00006EAA mov.w #0x1028, r1 ROM:00006EAE mov.w #0x1008, r0 ROM:00006EB2 jsr @er5 ; drawImageToScreen() ROM:00006EB4 mov.w #0x14B0, e6 ROM:00006EB8 add.w val_0x280, e6 ; 0x1730 = "shade" in frame for preferences screen ROM:00006EBA mov.w e6, r0 ROM:00006EBC mov.w #0xA0, r1 ; 'á' ROM:00006EC0 mov.w r6, e0 ROM:00006EC2 jsr @er3 ; eepromReadToRamAlso() ROM:00006EC4 mov.w r6, e0 ROM:00006EC6 mov.w #0x1028, r1 ROM:00006ECA mov.w #0x1038, r0 ROM:00006ECE jsr @er5 ; drawImageToScreen() ROM:00006ED0 mov.w #0x278, e6 ROM:00006ED4 add.w val_0x280, e6 ; 0x04F8 = arrows (up down left right), each in 3 configurations ROM:00006ED6 mov.w e6, r0 ROM:00006ED8 mov.w #0xC0, r1 ; '+' ROM:00006EDC mov.w r6, e0 ROM:00006EDE jsr @er3 ; eepromReadToRamAlso() ROM:00006EE0 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006EE0 ; battle: ROM:00006EE0 ; 0 - battle opening animation ROM:00006EE0 ; 1 - "XYZ appeared" message ROM:00006EE0 ; 2 - "attack evade catch" directions shown ROM:00006EE0 ; 3 - our action taken. details in gCurSubstateF ROM:00006EE0 ; 4 - poke action taken. details in gCurSubstateF ROM:00006EE0 ; 5 - "was too strong" ROM:00006EE0 ; 6 - we lost ROM:00006EE0 ; 7 - fled ROM:00006EE0 ; 8 - staredown ROM:00006EE0 ; 9 - almost had it ROM:00006EE0 ; 10 - "threw a pokeball" ROM:00006EE0 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006EE0 ; 12, 14 - pokeball flying ROM:00006EE0 ; 13 - pokeball flying ROM:00006EE0 ; 15 - catch animation plays ROM:00006EE0 ; 16 - caught! ROM:00006EE0 ; switcht: ROM:00006EE0 ; cur slected poke name ROM:00006EE4 mov.b #0x30, r0h ; '0' ROM:00006EE6 mulxu.b r0h, r0 ROM:00006EE8 mov.b r0l, r2l ROM:00006EEA mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00006EEA ; gifted items view: this is item number that has focus and arrow ROM:00006EEA ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00006EEA ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00006EEA ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00006EEE beq loc_6EFE:8 ROM:00006EF0 cmp.b #1, r0l ROM:00006EF2 beq loc_6F1E:8 ROM:00006EF4 cmp.b #2, r0l ROM:00006EF6 bne loc_7018:16 ROM:00006EFA jmp loc_6FA0:24 ROM:00006EFE ; --------------------------------------------------------------------------- ROM:00006EFE ROM:00006EFE loc_6EFE: ; CODE XREF: drawSettingsScreen+8Cj ROM:00006EFE mov.b @curUiFlags:16, r0l ; bits: ROM:00006EFE ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00006EFE ; 0x02 - slower animation frame ROM:00006F02 and.b #1, r0l ROM:00006F04 extu.w r0 ROM:00006F06 add.w #9, r0 ROM:00006F0A mov.w #0x10, e0 ROM:00006F0E mulxu.w e0, er0 ROM:00006F10 add.w r6, r0 ROM:00006F12 mov.w r0, e0 ROM:00006F14 mov.w #0x808, r1 ROM:00006F18 mov.b #0x14, r0h ROM:00006F1A mov.b r2l, r0l ROM:00006F1C bra loc_6F9C:8 ROM:00006F1E ; --------------------------------------------------------------------------- ROM:00006F1E ROM:00006F1E loc_6F1E: ; CODE XREF: drawSettingsScreen+90j ROM:00006F1E mov.w r6, r0 ROM:00006F20 add.w #0xB0, r0 ; '¦' ROM:00006F24 mov.w r0, e0 ROM:00006F26 mov.w #0x808, r1 ROM:00006F2A mov.b #0x14, r0h ROM:00006F2C mov.b r2l, r0l ROM:00006F2E jsr @er5 ; drawImageToScreen() ROM:00006F30 mov.b @RamCache_settingsByte:16, r0h ROM:00006F34 shlr.b r0h ROM:00006F36 and.b #3, r0h ROM:00006F38 mov.b r0h, r0l ROM:00006F3A mov.b #0x20, r0h ; ' ' ROM:00006F3C mulxu.b r0h, r0 ROM:00006F3E mov.b @curUiFlags:16, r0h ; bits: ROM:00006F3E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00006F3E ; 0x02 - slower animation frame ROM:00006F42 and.b #1, r0h ROM:00006F44 mov.b r0h, r1l ROM:00006F46 extu.w r1 ROM:00006F48 add.w #9, r1 ROM:00006F4C mov.w #0x10, e1 ROM:00006F50 mulxu.w e1, er1 ROM:00006F52 add.w r6, r1 ROM:00006F54 mov.w r1, e0 ROM:00006F56 mov.w #0x808, r1 ROM:00006F5A mov.b #0x2C, r0h ; ',' ROM:00006F5C jsr @er5 ; drawImageToScreen() ROM:00006F5E mov.w #0x1550, e6 ROM:00006F62 add.w val_0x280, e6 ROM:00006F64 mov.w e6, r0 ROM:00006F66 mov.w #0x120, r1 ROM:00006F6A mov.w r6, e0 ROM:00006F6C jsr @er3 ; eepromReadToRamAlso() ROM:00006F6E mov.w r6, e0 ROM:00006F70 mov.w #0x1018, r1 ROM:00006F74 mov.w #0x2808, r0 ROM:00006F78 jsr @er5 ; drawImageToScreen() ROM:00006F7A mov.w r6, r0 ROM:00006F7C add.w #0x60, r0 ; '`' ROM:00006F80 mov.w r0, e0 ROM:00006F82 mov.w #0x1018, r1 ROM:00006F86 mov.w #0x2828, r0 ROM:00006F8A jsr @er5 ; drawImageToScreen() ROM:00006F8C mov.w r6, r0 ROM:00006F8E add.w #0xC0, r0 ; '+' ROM:00006F92 mov.w r0, e0 ROM:00006F94 mov.w #0x1018, r1 ROM:00006F98 mov.w #0x2848, r0 ROM:00006F9C ROM:00006F9C loc_6F9C: ; CODE XREF: drawSettingsScreen+BAj ROM:00006F9C jsr @er5 ; drawImageToScreen() ROM:00006F9E bra loc_7018:8 ROM:00006FA0 ; --------------------------------------------------------------------------- ROM:00006FA0 ROM:00006FA0 loc_6FA0: ; CODE XREF: drawSettingsScreen+98j ROM:00006FA0 mov.b @RamCache_settingsByte:16, r0h ROM:00006FA4 shlr.b r0h ROM:00006FA6 shlr.b r0h ROM:00006FA8 shlr.b r0h ROM:00006FAA and.b #0xF, r0h ROM:00006FAC mov.b r0h, r0l ROM:00006FAE mov.b #8, r0h ROM:00006FB0 mulxu.b r0h, r0 ROM:00006FB2 add.b #8, r0l ROM:00006FB4 mov.b @curUiFlags:16, r0h ; bits: ROM:00006FB4 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00006FB4 ; 0x02 - slower animation frame ROM:00006FB8 and.b #1, r0h ROM:00006FBA mov.b r0h, r1l ROM:00006FBC extu.w r1 ROM:00006FBE add.w #3, r1 ROM:00006FC2 mov.w #0x10, e1 ROM:00006FC6 mulxu.w e1, er1 ROM:00006FC8 add.w r6, r1 ROM:00006FCA mov.w r1, e0 ROM:00006FCC mov.b #8, r1h ROM:00006FCE mov.b r1h, r1l ROM:00006FD0 mov.b #0x20, r0h ; ' ' ROM:00006FD2 jsr @er5 ; drawImageToScreen() ROM:00006FD4 mov.w r6, r0 ROM:00006FD6 add.w #0xB0, r0 ; '¦' ROM:00006FDA mov.w r0, e0 ROM:00006FDC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00006FDC ; battle: ROM:00006FDC ; 0 - battle opening animation ROM:00006FDC ; 1 - "XYZ appeared" message ROM:00006FDC ; 2 - "attack evade catch" directions shown ROM:00006FDC ; 3 - our action taken. details in gCurSubstateF ROM:00006FDC ; 4 - poke action taken. details in gCurSubstateF ROM:00006FDC ; 5 - "was too strong" ROM:00006FDC ; 6 - we lost ROM:00006FDC ; 7 - fled ROM:00006FDC ; 8 - staredown ROM:00006FDC ; 9 - almost had it ROM:00006FDC ; 10 - "threw a pokeball" ROM:00006FDC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00006FDC ; 12, 14 - pokeball flying ROM:00006FDC ; 13 - pokeball flying ROM:00006FDC ; 15 - catch animation plays ROM:00006FDC ; 16 - caught! ROM:00006FDC ; switcht: ROM:00006FDC ; cur slected poke name ROM:00006FE0 mov.b #0x30, r0h ; '0' ROM:00006FE2 mulxu.b r0h, r0 ROM:00006FE4 mov.b #8, r1h ROM:00006FE6 mov.b r1h, r1l ROM:00006FE8 mov.b #0x14, r0h ROM:00006FEA jsr @er5 ; drawImageToScreen() ROM:00006FEC mov.w #0x1670, e6 ROM:00006FF0 add.w val_0x280, e6 ROM:00006FF2 mov.w e6, r0 ROM:00006FF4 mov.w #0x20, r1 ; ' ' ROM:00006FF8 mov.w r6, e0 ROM:00006FFA jsr @er3 ; eepromReadToRamAlso() ROM:00006FFC sub.w e6, e6 ROM:00006FFE ROM:00006FFE loc_6FFE: ; CODE XREF: drawSettingsScreen+1B4j ROM:00006FFE mov.w e6, r0 ROM:00007000 mov.b #8, r0h ROM:00007002 mulxu.b r0h, r0 ROM:00007004 add.b #8, r0l ROM:00007006 mov.w r6, e0 ROM:00007008 mov.w #0x1008, r1 ROM:0000700C mov.b #0x28, r0h ; '(' ROM:0000700E jsr @er5 ; drawImageToScreen() ROM:00007010 inc.w #1, e6 ROM:00007012 cmp.w #0xA, e6 ROM:00007016 blt loc_6FFE:8 ROM:00007018 ROM:00007018 loc_7018: ; CODE XREF: drawSettingsScreen+94j ROM:00007018 ; drawSettingsScreen+13Cj ROM:00007018 mov.w #0x378, e6 ROM:0000701C add.w val_0x280, e6 ROM:0000701E mov.w e6, r0 ROM:00007020 mov.w #0x20, r1 ; ' ' ROM:00007024 mov.w r6, e0 ROM:00007026 jsr @er3 ; eepromReadToRamAlso() ROM:00007028 mov.w r6, e0 ROM:0000702A mov.w #0x1008, r1 ROM:0000702E sub.w r0, r0 ROM:00007030 jsr @er5 ; drawImageToScreen() ROM:00007032 mov.w #0x58, r0 ; 'X' ROM:00007036 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:0000703A rts ROM:0000703A ; End of function drawSettingsScreen ROM:0000703A ROM:0000703C ROM:0000703C ; =============== S U B R O U T I N E ======================================= ROM:0000703C ROM:0000703C ROM:0000703C drawPokewalkerInitialConnectionInstructionScreen: ROM:0000703C ; CODE XREF: maybe_viewDoDisplay:pokewalker_is_not_initedp ROM:0000703C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00007040 mov.w #0x100, r0 ROM:00007044 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00007048 mov.w r0, r5 ROM:0000704A mov.w #POKEWALKER_LARGE_IMAGE, e1 ; 32x32 ROM:0000704E sub.w e0, e0 ROM:00007050 ROM:00007050 loc_7050: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+26j ROM:00007050 mov.w e1, r0 ROM:00007052 add.w e0, r0 ROM:00007054 mov.w r5, r1 ROM:00007056 add.w e0, r1 ROM:00007058 mov.b @er0, r0l ROM:0000705A mov.b r0l, @er1 ROM:0000705C inc.w #1, e0 ROM:0000705E cmp.w #0x100, e0 ROM:00007062 bcs loc_7050:8 ROM:00007064 mov.w #POKEWALKER_NEUTRAL_FACE_IMAGE, e5 ; 16x8 :| ROM:00007068 mov.w r5, e1 ROM:0000706A add.w #0x50, e1 ; 'P' ROM:0000706E sub.w e0, e0 ROM:00007070 mov.b #0x20, r2l ; ' ' ROM:00007072 ROM:00007072 loc_7072: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+60j ROM:00007072 mov.w e1, r0 ROM:00007074 add.w e0, r0 ROM:00007076 mov.w e5, r3 ROM:00007078 add.w e0, r3 ROM:0000707A mov.b @er3, r1l ROM:0000707C mov.b #8, r1h ROM:0000707E mulxu.b r1h, r1 ROM:00007080 mov.b @er0, r1h ROM:00007082 or.b r1l, r1h ROM:00007084 mov.b r1h, @er0 ROM:00007086 mov.b @er3, r1l ROM:00007088 sub.b r1h, r1h ROM:0000708A divxu.b r2l, r1 ROM:0000708C mov.b @(0x40:16,er0), r1h ROM:00007090 or.b r1l, r1h ROM:00007092 mov.b r1h, @(0x40:16,er0) ROM:00007096 inc.w #1, e0 ROM:00007098 cmp.w #0x20, e0 ; ' ' ROM:0000709C bcs loc_7072:8 ROM:0000709E mov.b @curUiFlags:16, r0l ; bits: ROM:0000709E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000709E ; 0x02 - slower animation frame ROM:000070A2 extu.w r0 ROM:000070A4 shar.w r0 ROM:000070A6 shar.w r0 ROM:000070A8 btst #0, r0l ROM:000070AA beq loc_710A:8 ROM:000070AC mov.w #POKEWALKER_UP_ARROW_ICON, r3 ; 8x8 up arrow for "press here" ROM:000070B0 mov.w r5, e1 ROM:000070B2 add.w #0xD8, e1 ; '+' ROM:000070B6 sub.w e0, e0 ROM:000070B8 ROM:000070B8 loc_70B8: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+96j ROM:000070B8 mov.w e1, r0 ROM:000070BA add.w e0, r0 ROM:000070BC mov.w r3, r1 ROM:000070BE add.w e0, r1 ROM:000070C0 mov.b @er1, r2l ROM:000070C2 mov.b #0x10, r2h ROM:000070C4 mulxu.b r2h, r2 ROM:000070C6 mov.b @er0, r1l ROM:000070C8 or.b r2l, r1l ROM:000070CA mov.b r1l, @er0 ROM:000070CC inc.w #1, e0 ROM:000070CE cmp.w #0x10, e0 ROM:000070D2 bcs loc_70B8:8 ROM:000070D4 mov.w r5, e0 ROM:000070D6 mov.b #0x20, r1h ; ' ' ROM:000070D8 mov.b r1h, r1l ROM:000070DA mov.b #0x10, r0h ROM:000070DC mov.b r1h, r0l ROM:000070DE jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000070E2 sub.w e0, e0 ROM:000070E4 ROM:000070E4 loc_70E4: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+C0j ROM:000070E4 mov.w r3, r0 ROM:000070E6 add.w e0, r0 ROM:000070E8 mov.b @er0, r1l ROM:000070EA mov.b #0x10, r0l ROM:000070EC sub.b r1h, r1h ROM:000070EE divxu.b r0l, r1 ROM:000070F0 mov.w r5, r0 ROM:000070F2 add.w e0, r0 ROM:000070F4 mov.b r1l, @er0 ROM:000070F6 inc.w #1, e0 ROM:000070F8 cmp.w #0x10, e0 ROM:000070FC bcs loc_70E4:8 ROM:000070FE mov.w r5, e0 ROM:00007100 mov.w #0x808, r1 ROM:00007104 mov.w #0x302C, r0 ROM:00007108 bra loc_7114:8 ROM:0000710A ; --------------------------------------------------------------------------- ROM:0000710A ROM:0000710A loc_710A: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+6Ej ROM:0000710A mov.w r5, e0 ROM:0000710C mov.b r2l, r1h ROM:0000710E mov.b r1h, r1l ROM:00007110 mov.b #0x10, r0h ROM:00007112 mov.b r1h, r0l ROM:00007114 ROM:00007114 loc_7114: ; CODE XREF: drawPokewalkerInitialConnectionInstructionScreen+CCj ROM:00007114 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00007118 rts ROM:00007118 ; End of function drawPokewalkerInitialConnectionInstructionScreen ROM:00007118 ROM:0000711A ROM:0000711A ; =============== S U B R O U T I N E ======================================= ROM:0000711A ROM:0000711A ROM:0000711A drawSadPokewalkerImage: ; CODE XREF: maybe_viewDoDisplay+84p ROM:0000711A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000711E mov.w #0x100, r0 ROM:00007122 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00007126 mov.w r0, r5 ROM:00007128 mov.w #0xBB74, r4 ROM:0000712C sub.w e0, e0 ROM:0000712E ROM:0000712E loc_712E: ; CODE XREF: drawSadPokewalkerImage+26j ROM:0000712E mov.w r4, r0 ROM:00007130 add.w e0, r0 ROM:00007132 mov.w r5, r1 ROM:00007134 add.w e0, r1 ROM:00007136 mov.b @er0, r0l ROM:00007138 mov.b r0l, @er1 ROM:0000713A inc.w #1, e0 ROM:0000713C cmp.w #0x100, e0 ROM:00007140 bcs loc_712E:8 ROM:00007142 mov.w #POKEWALKER_SAD_FACE_IMAGE, e5 ; 16x8 :( ROM:00007146 mov.w r5, r0 ROM:00007148 add.w #0x50, r0 ; 'P' ROM:0000714C mov.w r0, e1 ROM:0000714E sub.w e0, e0 ROM:00007150 mov.b #0x20, r1l ; ' ' ROM:00007152 ROM:00007152 loc_7152: ; CODE XREF: drawSadPokewalkerImage+62j ROM:00007152 mov.w e1, r3 ROM:00007154 add.w e0, r3 ROM:00007156 mov.w e5, r4 ROM:00007158 add.w e0, r4 ROM:0000715A mov.b @er4, r0l ROM:0000715C mov.b #8, r0h ROM:0000715E mulxu.b r0h, r0 ROM:00007160 mov.b @er3, r0h ROM:00007162 or.b r0l, r0h ROM:00007164 mov.b r0h, @er3 ROM:00007166 mov.b @er4, r0l ROM:00007168 sub.b r0h, r0h ROM:0000716A divxu.b r1l, r0 ROM:0000716C mov.b @(0x40:16,er3), r0h ROM:00007170 or.b r0l, r0h ROM:00007172 mov.b r0h, @(0x40:16,er3) ROM:00007176 inc.w #1, e0 ROM:00007178 cmp.w #0x20, e0 ; ' ' ROM:0000717C bcs loc_7152:8 ROM:0000717E mov.w r5, e0 ROM:00007180 mov.b r1l, r1h ROM:00007182 mov.w #0x1020, r0 ROM:00007186 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000718A mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000718A ; battle: ROM:0000718A ; 0 - battle opening animation ROM:0000718A ; 1 - "XYZ appeared" message ROM:0000718A ; 2 - "attack evade catch" directions shown ROM:0000718A ; 3 - our action taken. details in gCurSubstateF ROM:0000718A ; 4 - poke action taken. details in gCurSubstateF ROM:0000718A ; 5 - "was too strong" ROM:0000718A ; 6 - we lost ROM:0000718A ; 7 - fled ROM:0000718A ; 8 - staredown ROM:0000718A ; 9 - almost had it ROM:0000718A ; 10 - "threw a pokeball" ROM:0000718A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000718A ; 12, 14 - pokeball flying ROM:0000718A ; 13 - pokeball flying ROM:0000718A ; 15 - catch animation plays ROM:0000718A ; 16 - caught! ROM:0000718A ; switcht: ROM:0000718A ; cur slected poke name ROM:0000718E inc.b r0l ROM:00007190 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00007190 ; battle: ROM:00007190 ; 0 - battle opening animation ROM:00007190 ; 1 - "XYZ appeared" message ROM:00007190 ; 2 - "attack evade catch" directions shown ROM:00007190 ; 3 - our action taken. details in gCurSubstateF ROM:00007190 ; 4 - poke action taken. details in gCurSubstateF ROM:00007190 ; 5 - "was too strong" ROM:00007190 ; 6 - we lost ROM:00007190 ; 7 - fled ROM:00007190 ; 8 - staredown ROM:00007190 ; 9 - almost had it ROM:00007190 ; 10 - "threw a pokeball" ROM:00007190 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00007190 ; 12, 14 - pokeball flying ROM:00007190 ; 13 - pokeball flying ROM:00007190 ; 15 - catch animation plays ROM:00007190 ; 16 - caught! ROM:00007190 ; switcht: ROM:00007190 ; cur slected poke name ROM:00007194 cmp.b #8, r0l ROM:00007196 bls locret_71A2:8 ROM:00007198 jsr someStateVarShuffling:24 ROM:0000719C sub.b r0l, r0l ROM:0000719E jsr setCurrentlyActiveView:24 ROM:000071A2 ROM:000071A2 locret_71A2: ; CODE XREF: drawSadPokewalkerImage+7Cj ROM:000071A2 rts ROM:000071A2 ; End of function drawSadPokewalkerImage ROM:000071A2 ROM:000071A4 ROM:000071A4 ; =============== S U B R O U T I N E ======================================= ROM:000071A4 ROM:000071A4 ROM:000071A4 drawHappyPokewalkerWithActiveConnectivityAnimation: ROM:000071A4 ; CODE XREF: goToConnectionMicroApp+1Cp ROM:000071A4 ; goToConnectionMicroApp+2Cp ROM:000071A4 mov.b r0l, r6l ROM:000071A6 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000071AA mov.w #0x100, r0 ROM:000071AE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000071B2 mov.w r0, r5 ROM:000071B4 mov.b r6l, r6l ROM:000071B6 beq loc_71C8:8 ROM:000071B8 mov.w #POKEWALKER_IR_ACTIVE_ICON, e0 ; wifi-like icon for "ir active" 8x8 ROM:000071BC mov.b #8, r1h ROM:000071BE mov.b r1h, r1l ROM:000071C0 mov.w #0x2C, r0 ; ',' ROM:000071C4 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000071C8 ROM:000071C8 loc_71C8: ; CODE XREF: drawHappyPokewalkerWithActiveConnectivityAnimation+12j ROM:000071C8 mov.w #POKEWALKER_LARGE_IMAGE, r4 ; 32x32 ROM:000071CC sub.w r6, r6 ROM:000071CE ROM:000071CE loc_71CE: ; CODE XREF: drawHappyPokewalkerWithActiveConnectivityAnimation+3Cj ROM:000071CE mov.w r4, r0 ROM:000071D0 add.w r6, r0 ROM:000071D2 mov.w r5, r1 ROM:000071D4 add.w r6, r1 ROM:000071D6 mov.b @er0, r0l ROM:000071D8 mov.b r0l, @er1 ROM:000071DA inc.w #1, r6 ROM:000071DC cmp.w #0x100, r6 ROM:000071E0 bcs loc_71CE:8 ROM:000071E2 mov.w #POKEWALKER_HAPPY_FACE_IMAGE, e1 ; 16x8 :) ROM:000071E6 mov.w r5, r0 ROM:000071E8 add.w #0x50, r0 ; 'P' ROM:000071EC mov.w r0, e0 ROM:000071EE sub.w r6, r6 ROM:000071F0 mov.b #0x20, r1l ; ' ' ROM:000071F2 ROM:000071F2 loc_71F2: ; CODE XREF: drawHappyPokewalkerWithActiveConnectivityAnimation+78j ROM:000071F2 mov.w e0, r4 ROM:000071F4 add.w r6, r4 ROM:000071F6 mov.w e1, r3 ROM:000071F8 add.w r6, r3 ROM:000071FA mov.b @er3, r0l ROM:000071FC mov.b #8, r0h ROM:000071FE mulxu.b r0h, r0 ROM:00007200 mov.b @er4, r0h ROM:00007202 or.b r0l, r0h ROM:00007204 mov.b r0h, @er4 ROM:00007206 mov.b @er3, r0l ROM:00007208 sub.b r0h, r0h ROM:0000720A divxu.b r1l, r0 ROM:0000720C mov.b @(0x40:16,er4), r0h ROM:00007210 or.b r0l, r0h ROM:00007212 mov.b r0h, @(0x40:16,er4) ROM:00007216 inc.w #1, r6 ROM:00007218 cmp.w #0x20, r6 ; ' ' ROM:0000721C bcs loc_71F2:8 ROM:0000721E mov.w r5, e0 ROM:00007220 mov.b r1l, r1h ROM:00007222 mov.w #0x1020, r0 ROM:00007226 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000722A rts ROM:0000722A ; End of function drawHappyPokewalkerWithActiveConnectivityAnimation ROM:0000722A ROM:0000722C ROM:0000722C ; =============== S U B R O U T I N E ======================================= ROM:0000722C ROM:0000722C ROM:0000722C connectionStartHandlerLikely: ; CODE XREF: goToConnectionMicroApp+3Ap ROM:0000722C ; goToConnectionMicroApp+50p ROM:0000722C mov.b r0l, r5l ROM:0000722E jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00007232 mov.w #0x180, r0 ROM:00007236 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000723A mov.w r0, r6 ROM:0000723C mov.b r5l, r5l ROM:0000723E beq loc_725E:8 ROM:00007240 mov.w #0x2450, r5 ROM:00007244 mov.w r5, r0 ROM:00007246 mov.w #0x20, r1 ; ' ' ROM:0000724A mov.w r6, e0 ROM:0000724C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007250 mov.w r6, e0 ROM:00007252 mov.w #0x1008, r1 ROM:00007256 mov.w #0x2C, r0 ; ',' ROM:0000725A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000725E ROM:0000725E loc_725E: ; CODE XREF: connectionStartHandlerLikely+12j ROM:0000725E mov.w #0x2350, r5 ROM:00007262 mov.w r5, r0 ROM:00007264 mov.w #0x100, r1 ROM:00007268 mov.w r6, e0 ROM:0000726A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000726E mov.w r6, e0 ROM:00007270 mov.w #0x2020, r1 ROM:00007274 mov.w #0x1020, r0 ROM:00007278 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000727C mov.w #0xF, r1 ROM:00007280 mov.w #0x30, r0 ; '0' ; "Connecting..." ROM:00007284 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00007284 ; ROM:00007284 ; //always drawn at x = 0 ROM:00007284 ; ROM:00007288 rts ROM:00007288 ; End of function connectionStartHandlerLikely ROM:00007288 ROM:0000728A ROM:0000728A ; =============== S U B R O U T I N E ======================================= ROM:0000728A ROM:0000728A ; message to show is in "commsErrorMessageId" ROM:0000728A ; ROM:0000728A ; 1 - "No trainer found" ROM:0000728A ; 2, 8 - "Cannot connect" ROM:0000728A ; 3 - "Cannot complete this Connection" ROM:0000728A ; 4 - "No Pokemon held!" ROM:0000728A ; 5 - "Cannot connect to trainer again" ROM:0000728A ; 6 - "Already received this event" ROM:0000728A ; 7 - "Could not receive..." ROM:0000728A ROM:0000728A showCommsErrorMessage: ; CODE XREF: maybe_viewDoDisplay:loc_7490p ROM:0000728A jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000728E mov.w #0x180, r0 ROM:00007292 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00007296 mov.w r0, r6 ROM:00007298 mov.w #0x2350, r5 ; 0x2350 = pokewalker image, blank screen, 32x32 ROM:0000729C mov.w r0, e0 ROM:0000729E mov.w r5, r0 ROM:000072A0 mov.w #0x100, r1 ROM:000072A4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000072A8 mov.w r6, e0 ROM:000072AA mov.w #0x2020, r1 ROM:000072AE mov.w #0x1020, r0 ROM:000072B2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000072B6 mov.w #drawLargeMessagePotentiallyWithBlinkingCursor, r6 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:000072B6 ; ROM:000072B6 ; //always drawn at x = 0 ROM:000072B6 ; ROM:000072BA mov.b @commsErrorMessageId:16, r0l ROM:000072BE add.b #-1, r0l ROM:000072C0 cmp.b #7, r0l ROM:000072C2 bhi loc_733E:8 ROM:000072C4 extu.w r0 ROM:000072C6 mov.b @(JUMPTABLE_OFFSETS_72C6,er0), r0l ROM:000072CA add.w #0x72D0, r0 ROM:000072CE jmp @er0 ROM:000072D0 ; --------------------------------------------------------------------------- ROM:000072D0 ROM:000072D0 case_0: ROM:000072D0 mov.w #0x10F, r1 ROM:000072D4 mov.w #0x130, r0 ; "No trainer found" ROM:000072D8 bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:000072DA ; --------------------------------------------------------------------------- ROM:000072DA ROM:000072DA case_1_and_7_: ROM:000072DA mov.w #0x10F, r1 ROM:000072DE mov.w #0x430, r0 ; "Cannot connect" ROM:000072E2 bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:000072E4 ; --------------------------------------------------------------------------- ROM:000072E4 ROM:000072E4 case_2: ROM:000072E4 mov.w #0xD, r1 ROM:000072E8 mov.w #0x220, r0 ; "Cannot complete" ROM:000072EC jsr @er6 ; drawLargeMessagePotentiallyWithBlinkingCursor(r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:000072EE mov.w #0x10E, r1 ROM:000072F2 mov.w #0x330, r0 ; "this Connection" ROM:000072F6 bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:000072F8 ; --------------------------------------------------------------------------- ROM:000072F8 ROM:000072F8 case_4: ROM:000072F8 mov.w #0xD, r1 ROM:000072FC mov.w #0x920, r0 ; "Cannot connect" ROM:00007300 jsr @er6 ; drawLargeMessagePotentiallyWithBlinkingCursor(r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00007302 mov.w #0x10E, r1 ROM:00007306 mov.w #0xA30, r0 ; "to trainer again" ROM:0000730A bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:0000730C ; --------------------------------------------------------------------------- ROM:0000730C ROM:0000730C case_5: ROM:0000730C mov.w #0xD, r1 ROM:00007310 mov.w #0x720, r0 ; "Already received" ROM:00007314 jsr @er6 ; drawLargeMessagePotentiallyWithBlinkingCursor(r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00007316 mov.w #0x10E, r1 ROM:0000731A mov.w #0x830, r0 ; "this event" ROM:0000731E bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:00007320 ; --------------------------------------------------------------------------- ROM:00007320 ROM:00007320 case_6: ROM:00007320 mov.w #0xD, r1 ROM:00007324 mov.w #0xB20, r0 ; "Could not" ROM:00007328 jsr @er6 ; drawLargeMessagePotentiallyWithBlinkingCursor(r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000732A mov.w #0x10E, r1 ROM:0000732E mov.w #0xC30, r0 ; "receive..." ROM:00007332 bra displaySecondHalfOfMessageOrCompleteshortMessage:8 ROM:00007334 ; --------------------------------------------------------------------------- ROM:00007334 ROM:00007334 case_3: ROM:00007334 mov.w #0x10F, r1 ROM:00007338 mov.w #0x1530, r0 ; "No Pokemon held!" ROM:0000733C ROM:0000733C displaySecondHalfOfMessageOrCompleteshortMessage: ROM:0000733C ; CODE XREF: showCommsErrorMessage+4Ej ROM:0000733C ; showCommsErrorMessage+58j ... ROM:0000733C jsr @er6 ; drawLargeMessagePotentiallyWithBlinkingCursor(r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000733E ROM:0000733E loc_733E: ; CODE XREF: showCommsErrorMessage+38j ROM:0000733E mov.w #0x58, r0 ; 'X' ROM:00007342 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00007346 rts ROM:00007346 ; End of function showCommsErrorMessage ROM:00007346 ROM:00007348 ROM:00007348 ; =============== S U B R O U T I N E ======================================= ROM:00007348 ROM:00007348 ROM:00007348 interactionHandler: ; CODE XREF: sleepModeEventLoop+54p ROM:00007348 ; normalModeEventLoop+20p ROM:00007348 jsr common_prologue_2:24 ROM:0000734C jsr rand:24 ROM:00007350 mov.b @currentlyActiveView:16, r0l ROM:00007354 cmp.b #0x17, r0l ROM:00007356 bhi case_0x05_0x12_0x13_0x14_0x15_default:16 ROM:0000735A extu.w r0 ROM:0000735C mov.b @(JUMPTABLE_OFFSETS_735C,er0), r0l ROM:00007360 add.w #0x7366, r0 ROM:00007364 jmp @er0 ROM:00007366 ; --------------------------------------------------------------------------- ROM:00007366 ROM:00007366 case_0x00: ROM:00007366 jsr interactionHandlerHomeScreen:24 ROM:0000736A jmp case_0x05_0x12_0x13_0x14_0x15_default:24 ROM:0000736E ; --------------------------------------------------------------------------- ROM:0000736E ROM:0000736E case_0x0c: ROM:0000736E jsr interactionHandlerRandomGiftFromBoredPokemon:24 ROM:00007372 jmp case_0x05_0x12_0x13_0x14_0x15_default:24 ROM:00007376 ; --------------------------------------------------------------------------- ROM:00007376 ROM:00007376 case_0x0d: ROM:00007376 jsr interactionHandlerPeerPlay:24 ROM:0000737A bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:0000737C ; --------------------------------------------------------------------------- ROM:0000737C ROM:0000737C case_0x01: ROM:0000737C jsr interactionHAndlerMainMenu:24 ROM:00007380 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:00007382 ; --------------------------------------------------------------------------- ROM:00007382 ROM:00007382 case_0x02: ROM:00007382 jsr interactionHandlerDowsing:24 ROM:00007386 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:00007388 ; --------------------------------------------------------------------------- ROM:00007388 ROM:00007388 case_0x03: ROM:00007388 jsr interactionHandlerPokeRadar:24 ROM:0000738C bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:0000738E ; --------------------------------------------------------------------------- ROM:0000738E ROM:0000738E case_0x04: ROM:0000738E jsr interactionHandlerPokeBattle:24 ROM:00007392 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:00007394 ; --------------------------------------------------------------------------- ROM:00007394 ROM:00007394 case_0x06: ROM:00007394 jsr interactionHandlerPokeRadarFailureUserTooSlow:24 ROM:00007398 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:0000739A ; --------------------------------------------------------------------------- ROM:0000739A ROM:0000739A case_0x07: ROM:0000739A jsr interactionHandlerSwitchScreen:24 ROM:0000739E bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073A0 ; --------------------------------------------------------------------------- ROM:000073A0 ROM:000073A0 case_0x08: ROM:000073A0 jsr interactionHandlerTrainerCardAndStatsScreens:24 ROM:000073A4 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073A6 ; --------------------------------------------------------------------------- ROM:000073A6 ROM:000073A6 case_0x0a: ROM:000073A6 jsr interactionHandlerPokemonAndItemsScreen:24 ROM:000073AA bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073AC ; --------------------------------------------------------------------------- ROM:000073AC ROM:000073AC case_0x09: ROM:000073AC jsr interactionHandlerSettings:24 ROM:000073B0 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073B2 ; --------------------------------------------------------------------------- ROM:000073B2 ROM:000073B2 case_0x0b: ROM:000073B2 jsr interactionHandlerGiftedItemsScreen:24 ROM:000073B6 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073B8 ; --------------------------------------------------------------------------- ROM:000073B8 ROM:000073B8 case_0x0e: ; comms error ROM:000073B8 mov.b @walker_status_flags:16, r0l ROM:000073BC bld #1, r0l ROM:000073BE bcc case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073C0 mov.b #0xE, r0l ROM:000073C2 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000073C2 ; // 0x02 - enter ROM:000073C2 ; // 0x04 - left ROM:000073C2 ; // 0x08 - right ROM:000073C6 mov.b r0l, r0l ROM:000073C8 beq case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073CA jsr someStateVarShuffling:24 ROM:000073CE sub.b r0l, r0l ROM:000073D0 jsr setCurrentlyActiveView:24 ROM:000073D4 sub.b r0l, r0l ROM:000073D6 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000073DA bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073DC ; --------------------------------------------------------------------------- ROM:000073DC ROM:000073DC case_0x0f: ROM:000073DC jsr interactionHandlerPokemonArrivedAnimation:24 ROM:000073E0 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073E2 ; --------------------------------------------------------------------------- ROM:000073E2 ROM:000073E2 case_0x10: ROM:000073E2 jsr interactionHandlerUnknonView_0x10:24 ROM:000073E6 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073E8 ; --------------------------------------------------------------------------- ROM:000073E8 ROM:000073E8 case_0x11: ROM:000073E8 jsr interactionHandlerSomethingReceivedScreenDirectIrCommand:24 ROM:000073EC bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073EE ; --------------------------------------------------------------------------- ROM:000073EE ROM:000073EE case_0x16: ROM:000073EE jsr interactionHandlerDebugMode22:24 ROM:000073F2 bra case_0x05_0x12_0x13_0x14_0x15_default:8 ROM:000073F4 ; --------------------------------------------------------------------------- ROM:000073F4 ROM:000073F4 case_0x17: ROM:000073F4 jsr interactionHandlerDebugMode23:24 ROM:000073F8 ROM:000073F8 case_0x05_0x12_0x13_0x14_0x15_default: ; CODE XREF: interactionHandler+Ej ROM:000073F8 ; interactionHandler+22j ... ROM:000073F8 mov.b @byte_FFF7AB:16, r0l ROM:000073FC inc.b r0l ROM:000073FE mov.b r0l, @byte_FFF7AB:16 ROM:00007402 jmp common_epologue_2:24 ROM:00007402 ; End of function interactionHandler ROM:00007402 ROM:00007406 ROM:00007406 ; =============== S U B R O U T I N E ======================================= ROM:00007406 ROM:00007406 ROM:00007406 maybe_viewDoDisplay: ; CODE XREF: sleepModeEventLoop+94p ROM:00007406 ; normalModeEventLoop+3Cp ROM:00007406 jsr common_prologue_2:24 ROM:0000740A mov.b @currentlyActiveView:16, r0l ROM:0000740E cmp.b #0x18, r0l ROM:00007410 bhi case__default_0x05_0x12_0x13_0x14_0x15:16 ROM:00007414 extu.w r0 ROM:00007416 mov.b @(JUMPTABLE_OFFSETS_7416,er0), r0l ROM:0000741A add.w #0x7420, r0 ROM:0000741E jmp @er0 ROM:00007420 ; --------------------------------------------------------------------------- ROM:00007420 ROM:00007420 case__0x00: ; 0x02 - walker inited ROM:00007420 mov.b @walker_status_flags:16, r0l ; 0x04 - have walking poke ROM:00007424 bld #1, r0l ROM:00007426 bcs pokewalker_is_inited:8 ROM:00007428 ROM:00007428 pokewalker_is_not_inited: ROM:00007428 jsr drawPokewalkerInitialConnectionInstructionScreen:24 ROM:0000742C jmp case__default_0x05_0x12_0x13_0x14_0x15:24 ROM:00007430 ; --------------------------------------------------------------------------- ROM:00007430 ROM:00007430 pokewalker_is_inited: ; CODE XREF: maybe_viewDoDisplay+20j ROM:00007430 jsr drawHomeScreenMain:24 ROM:00007434 jsr drawhomeScreenSmallIconsOnBottom:24 ROM:00007438 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000743A ; --------------------------------------------------------------------------- ROM:0000743A ROM:0000743A case__0x0c: ROM:0000743A jsr showPokemonFeelingsAndRandomFindings:24 ROM:0000743E bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007440 ; --------------------------------------------------------------------------- ROM:00007440 ROM:00007440 case__0x0d: ROM:00007440 jsr drawPeerPlay:24 ROM:00007444 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007446 ; --------------------------------------------------------------------------- ROM:00007446 ROM:00007446 case__0x01: ROM:00007446 jsr mainMenuDraw:24 ROM:0000744A bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000744C ; --------------------------------------------------------------------------- ROM:0000744C ROM:0000744C case__0x02: ROM:0000744C jsr dowsingDraw:24 ROM:00007450 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007452 ; --------------------------------------------------------------------------- ROM:00007452 ROM:00007452 case__0x03: ROM:00007452 jsr pokeRadarDraw:24 ROM:00007456 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007458 ; --------------------------------------------------------------------------- ROM:00007458 ROM:00007458 case__0x04: ROM:00007458 jsr battleScreenDraw:24 ROM:0000745C bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000745E ; --------------------------------------------------------------------------- ROM:0000745E ROM:0000745E case__0x06: ROM:0000745E jsr pokeradarUserTooSlowScreen:24 ROM:00007462 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007464 ; --------------------------------------------------------------------------- ROM:00007464 ROM:00007464 case__0x07: ; used to pick what to do when already have 3 pokemon or 3 items and another gets added ROM:00007464 jsr drawSwitchScreen:24 ROM:00007468 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000746A ; --------------------------------------------------------------------------- ROM:0000746A ROM:0000746A case__0x08: ROM:0000746A jsr drawTrainerCardAndstatsScreens:24 ROM:0000746E bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007470 ; --------------------------------------------------------------------------- ROM:00007470 ROM:00007470 case__0x0a: ROM:00007470 jsr drawPokemonAndItemsScreen:24 ROM:00007474 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007476 ; --------------------------------------------------------------------------- ROM:00007476 ROM:00007476 case__0x09: ROM:00007476 jsr drawSettingsScreen:24 ROM:0000747A bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000747C ; --------------------------------------------------------------------------- ROM:0000747C ROM:0000747C case__0x0b: ROM:0000747C jsr giftedItemsView:24 ROM:00007480 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007482 ; --------------------------------------------------------------------------- ROM:00007482 ROM:00007482 case__0x0e: ; 0x02 - walker inited ROM:00007482 mov.b @walker_status_flags:16, r0l ; 0x04 - have walking poke ROM:00007486 bld #1, r0l ROM:00007488 bcs loc_7490:8 ROM:0000748A jsr drawSadPokewalkerImage:24 ROM:0000748E bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007490 ; --------------------------------------------------------------------------- ROM:00007490 ROM:00007490 loc_7490: ; CODE XREF: maybe_viewDoDisplay+82j ROM:00007490 jsr showCommsErrorMessage:24 ; message to show is in "commsErrorMessageId" ROM:00007490 ; ROM:00007490 ; 1 - "No trainer found" ROM:00007490 ; 2, 8 - "Cannot connect" ROM:00007490 ; 3 - "Cannot complete this Connection" ROM:00007490 ; 4 - "No Pokemon held!" ROM:00007490 ; 5 - "Cannot connect to trainer again" ROM:00007490 ; 6 - "Already received this event" ROM:00007490 ; 7 - "Could not receive..." ROM:00007494 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:00007496 ; --------------------------------------------------------------------------- ROM:00007496 ROM:00007496 case__0x0f: ROM:00007496 jsr drawPokemonArrivedAnimation:24 ROM:0000749A bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:0000749C ; --------------------------------------------------------------------------- ROM:0000749C ROM:0000749C case__0x10: ROM:0000749C jsr drawSomethignDepartingandCompletedMessage:24 ROM:000074A0 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:000074A2 ; --------------------------------------------------------------------------- ROM:000074A2 ROM:000074A2 case__0x11: ROM:000074A2 jsr drawSomethingReceivedAnimation:24 ROM:000074A6 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:000074A8 ; --------------------------------------------------------------------------- ROM:000074A8 ROM:000074A8 case__0x16: ROM:000074A8 jsr drawSomethingWithTinyChars:24 ROM:000074AC bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:000074AE ; --------------------------------------------------------------------------- ROM:000074AE ROM:000074AE case__0x17: ROM:000074AE jsr drawSomethingWithTinyChars2:24 ROM:000074B2 bra case__default_0x05_0x12_0x13_0x14_0x15:8 ROM:000074B4 ; --------------------------------------------------------------------------- ROM:000074B4 ROM:000074B4 case__0x18: ROM:000074B4 jsr drawNG6inTinyChars:24 ROM:000074B8 ROM:000074B8 case__default_0x05_0x12_0x13_0x14_0x15: ; CODE XREF: maybe_viewDoDisplay+Aj ROM:000074B8 ; maybe_viewDoDisplay+26j ... ROM:000074B8 jmp common_epologue_2:24 ROM:000074B8 ; End of function maybe_viewDoDisplay ROM:000074B8 ROM:000074BC ROM:000074BC ; =============== S U B R O U T I N E ======================================= ROM:000074BC ROM:000074BC ROM:000074BC drawhomeScreenSmallIconsOnBottom: ; CODE XREF: maybe_viewDoDisplay+2Ep ROM:000074BC val_0x280 = r3 ROM:000074BC val_0x10 = e6 ROM:000074BC mov.w #0x10, val_0x10 ROM:000074C0 mov.w #0x280, val_0x280 ROM:000074C4 jsr someDisaplyNonsense:24 ROM:000074C8 mov.w #0xB800, r0 ROM:000074CC jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:000074D0 mov.b r0l, r4l ROM:000074D2 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:000074D6 mov.w #0x180, r0 ROM:000074DA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000074DE mov.w r0, r5 ROM:000074E0 btst #5, r4l ROM:000074E2 beq no_evt_poke_present:8 ROM:000074E4 mov.w #0x1F0, r6 ROM:000074E8 add.w val_0x280, r6 ; 0x470 = pokeball light grey 8x8 ROM:000074EA mov.w r6, r0 ROM:000074EC mov.w val_0x10, r1 ROM:000074EE mov.w r5, e0 ROM:000074F0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000074F4 sub.w r6, r6 ROM:000074F6 ROM:000074F6 overline_8_pixels: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+48j ROM:000074F6 mov.w r5, r0 ROM:000074F8 add.w r6, r0 ROM:000074FA bset #0, @er0 ROM:000074FE inc.w #1, r6 ROM:00007500 cmp.w #0x10, r6 ROM:00007504 blt overline_8_pixels:8 ROM:00007506 mov.w r5, e0 ROM:00007508 mov.b #8, r1h ROM:0000750A mov.b r1h, r1l ROM:0000750C mov.w #0x3000, r0 ROM:00007510 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00007514 ROM:00007514 no_evt_poke_present: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+26j ROM:00007514 btst #6, r4l ROM:00007516 beq loc_755E:8 ROM:00007518 mov.w #0xBD40, r6 ROM:0000751C mov.w r6, r0 ROM:0000751E mov.w #8, r1 ROM:00007522 mov.w r5, e0 ROM:00007524 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007528 mov.w @(6:16,er5), r0 ROM:0000752C beq loc_755E:8 ROM:0000752E mov.w #0x218, r6 ROM:00007532 add.w val_0x280, r6 ; 0x498 - item symbol (light grey background - lower contrast) 8x8 ROM:00007534 mov.w r6, r0 ROM:00007536 mov.w val_0x10, r1 ROM:00007538 mov.w r5, e0 ROM:0000753A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000753E sub.w r6, r6 ROM:00007540 ROM:00007540 overline_8_pixels_also: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+92j ROM:00007540 mov.w r5, r0 ROM:00007542 add.w r6, r0 ROM:00007544 bset #0, @er0 ROM:00007548 inc.w #1, r6 ROM:0000754A cmp.w #0x10, r6 ROM:0000754E blt overline_8_pixels_also:8 ROM:00007550 mov.w r5, e0 ROM:00007552 mov.b #8, r1h ROM:00007554 mov.b r1h, r1l ROM:00007556 mov.b #0x30, r0h ; '0' ROM:00007558 mov.b r1h, r0l ROM:0000755A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000755E ROM:0000755E loc_755E: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+5Aj ROM:0000755E ; drawhomeScreenSmallIconsOnBottom+70j ROM:0000755E mov.w #0x238, r6 ROM:00007562 add.w val_0x280, r6 ; 04B8 = card faces: heart, spade, diamond, club, 8x8 each ROM:00007564 mov.w r6, r0 ROM:00007566 mov.w #0x40, r1 ; '@' ROM:0000756A mov.w r5, e0 ROM:0000756C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007570 sub.w r6, r6 ROM:00007572 ROM:00007572 overline_32_pixels: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+C4j ROM:00007572 mov.w r5, r0 ROM:00007574 add.w r6, r0 ROM:00007576 bset #0, @er0 ROM:0000757A inc.w #1, r6 ROM:0000757C cmp.w #0x40, r6 ; '@' ROM:00007580 blt overline_32_pixels:8 ROM:00007582 btst #0, r4l ROM:00007584 beq loc_7594:8 ROM:00007586 mov.w r5, e0 ROM:00007588 mov.b #8, r1h ROM:0000758A mov.b r1h, r1l ROM:0000758C mov.w #0x3010, r0 ROM:00007590 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00007594 ROM:00007594 loc_7594: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+C8j ROM:00007594 mov.w r5, r0 ROM:00007596 add.w val_0x10, r0 ROM:00007598 mov.w r0, e5 ROM:0000759A btst #1, r4l ROM:0000759C beq loc_75AC:8 ROM:0000759E mov.w e5, e0 ROM:000075A0 mov.b #8, r1h ROM:000075A2 mov.b r1h, r1l ROM:000075A4 mov.w #0x3018, r0 ROM:000075A8 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000075AC ROM:000075AC loc_75AC: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+E0j ROM:000075AC btst #2, r4l ROM:000075AE beq loc_75C4:8 ROM:000075B0 mov.w r5, r0 ROM:000075B2 add.w #0x20, r0 ; ' ' ROM:000075B6 mov.w r0, e0 ROM:000075B8 mov.b #8, r1h ROM:000075BA mov.b r1h, r1l ROM:000075BC mov.w #0x3020, r0 ROM:000075C0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000075C4 ROM:000075C4 loc_75C4: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+F2j ROM:000075C4 btst #3, r4l ROM:000075C6 beq loc_75DC:8 ROM:000075C8 mov.w r5, r0 ROM:000075CA add.w #0x30, r0 ; '0' ROM:000075CE mov.w r0, e0 ROM:000075D0 mov.b #8, r1h ROM:000075D2 mov.b r1h, r1l ROM:000075D4 mov.w #0x3028, r0 ROM:000075D8 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000075DC ROM:000075DC loc_75DC: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+10Aj ROM:000075DC mov.w #0x1E0, r6 ROM:000075E0 add.w val_0x280, r6 ROM:000075E2 mov.w r6, r0 ROM:000075E4 mov.w val_0x10, r1 ROM:000075E6 mov.w r5, e0 ROM:000075E8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000075EC mov.w #0xCE8C, r0 ROM:000075F0 mov.w #0x30, r1 ; '0' ROM:000075F4 mov.w e5, e0 ROM:000075F6 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000075FA sub.w r6, r6 ROM:000075FC ROM:000075FC loc_75FC: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+166j ROM:000075FC mov.w r6, r0 ROM:000075FE mov.w #0x10, e0 ROM:00007602 mulxu.w e0, er0 ROM:00007604 add.w e5, r0 ROM:00007606 mov.w @er0, e0 ROM:00007608 beq loc_761C:8 ROM:0000760A mov.b r6l, r0l ROM:0000760C mov.b #8, r0h ROM:0000760E mulxu.b r0h, r0 ROM:00007610 mov.w r5, e0 ROM:00007612 mov.b #8, r1h ROM:00007614 mov.b r1h, r1l ROM:00007616 mov.b #0x38, r0h ; '8' ROM:00007618 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000761C ROM:0000761C loc_761C: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+14Cj ROM:0000761C inc.w #1, r6 ROM:0000761E cmp.w #3, r6 ROM:00007622 blt loc_75FC:8 ROM:00007624 mov.w #0x208, r6 ROM:00007628 add.w val_0x280, r6 ROM:0000762A mov.w r6, r0 ROM:0000762C mov.w val_0x10, r1 ROM:0000762E mov.w r5, e0 ROM:00007630 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007634 mov.w #0xCEBC, r0 ROM:00007638 mov.w #0xC, r1 ROM:0000763C mov.w e5, e0 ROM:0000763E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007642 sub.w r6, r6 ROM:00007644 ROM:00007644 loc_7644: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+1AEj ROM:00007644 mov.w r6, r0 ROM:00007646 shll.w r0 ROM:00007648 shll.w r0 ROM:0000764A add.w e5, r0 ROM:0000764C mov.w @er0, e0 ROM:0000764E beq loc_7664:8 ROM:00007650 mov.b r6l, r0l ROM:00007652 mov.b #8, r0h ROM:00007654 mulxu.b r0h, r0 ROM:00007656 add.b #0x18, r0l ROM:00007658 mov.w r5, e0 ROM:0000765A mov.b #8, r1h ROM:0000765C mov.b r1h, r1l ROM:0000765E mov.b #0x38, r0h ; '8' ROM:00007660 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00007664 ROM:00007664 loc_7664: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+192j ROM:00007664 inc.w #1, r6 ROM:00007666 cmp.w #3, r6 ROM:0000766A blt loc_7644:8 ROM:0000766C btst #4, r4l ROM:0000766E beq loc_768E:8 ROM:00007670 mov.w #0x228, r6 ROM:00007674 add.w val_0x280, r6 ROM:00007676 mov.w r6, r0 ROM:00007678 mov.w val_0x10, r1 ROM:0000767A mov.w r5, e0 ROM:0000767C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00007680 mov.w r5, e0 ROM:00007682 mov.b #8, r1h ROM:00007684 mov.b r1h, r1l ROM:00007686 mov.w #0x3830, r0 ROM:0000768A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000768E ROM:0000768E loc_768E: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+1B2j ROM:0000768E mov.b #1, r0l ROM:00007690 push.w r0 ROM:00007692 mov.l @stepCountTodaySoFar:16, er1 ROM:00007698 mov.w #0x3058, r0 ROM:0000769C jsr drawNumberOnscreen:24 ; ( ROM:0000769C ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:0000769C ; r0h = y ROM:0000769C ; er1 = number ROM:0000769C ; [sp] = bool addOverline ROM:0000769C ; ) ROM:000076A0 adds #2, sp ROM:000076A2 sub.w r0, r0 ROM:000076A4 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:000076A8 rts ROM:000076A8 ; End of function drawhomeScreenSmallIconsOnBottom ROM:000076A8 ROM:000076AA ROM:000076AA ; =============== S U B R O U T I N E ======================================= ROM:000076AA ROM:000076AA ; only shows anythig onscreen if view is 0x17 (23) ROM:000076AA ROM:000076AA accelReadSample: ; CODE XREF: sleepModeEventLoop+14p ROM:000076AA push.w r4 ROM:000076AC push.w r5 ROM:000076AE push.w r6 ROM:000076B0 sub.w #6, r7 ROM:000076B4 mov.w r7, r5 ROM:000076B6 mov.b #0x87, r0l ; 'ç' ROM:000076B8 mov.b r0l, @SSU_SSMR:16 ROM:000076BC bclr #0, @IO_PDR9:8 ; accel nCS selected ROM:000076C0 ROM:000076C0 loc_76C0: ; CODE XREF: accelReadSample+1Cj ROM:000076C0 mov.b @SSU_SSSR:16, r0l ROM:000076C4 bld #2, r0l ROM:000076C6 bcc loc_76C0:8 ROM:000076C8 mov.b #0xA, r0l ; write register 0x0A ROM:000076CA mov.b r0l, @SSU_SSTDR:16 ROM:000076CE ROM:000076CE loc_76CE: ; CODE XREF: accelReadSample+2Aj ROM:000076CE mov.b @SSU_SSSR:16, r0l ROM:000076D2 bld #3, r0l ROM:000076D4 bcc loc_76CE:8 ROM:000076D6 sub.b r0l, r0l ; 0 = wake up ROM:000076D8 mov.b r0l, @SSU_SSTDR:16 ROM:000076DC mov.b #0x5E, r0h ; '^' ROM:000076DE mov.b r0h, @WDT_TCSRWD1:8 ROM:000076E0 mov.b r0l, @WDT_TCWD:8 ROM:000076E2 mov.b #0x9E, r0h ; 'P' ROM:000076E4 mov.b r0h, @WDT_TCSRWD1:8 ROM:000076E6 mov.b #0xA7, r0h ; 'º' ROM:000076E8 mov.b r0h, @SYSCR1:8 ROM:000076EA mov.b #0xEB, r0h ; 'd' ROM:000076EC mov.b r0h, @SYSCR2:8 ROM:000076EE mov.w #common_bit_flags, r1 ROM:000076F2 bset #4, @er1 ROM:000076F6 bset #0, @IO_PDR9:8 ROM:000076FA mov.b #0x86, r0h ; 'å' ROM:000076FC mov.b r0h, @SSU_SSMR:16 ROM:00007700 sleep ROM:00007702 ROM:00007702 read_accel_data: ROM:00007702 mov.b #6, r0h ROM:00007704 mov.w r5, e0 ROM:00007706 mov.b #2, r0l ROM:00007708 jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:0000770C bclr #0, @IO_PDR9:8 ROM:00007710 ROM:00007710 loc_7710: ; CODE XREF: accelReadSample+6Cj ROM:00007710 mov.b @SSU_SSSR:16, r0l ROM:00007714 bld #2, r0l ROM:00007716 bcc loc_7710:8 ROM:00007718 mov.b #0xA, r0l ; write reg 0x0a ROM:0000771A mov.b r0l, @SSU_SSTDR:16 ROM:0000771E ROM:0000771E loc_771E: ; CODE XREF: accelReadSample+7Aj ROM:0000771E mov.b @SSU_SSSR:16, r0l ROM:00007722 bld #2, r0l ROM:00007724 bcc loc_771E:8 ROM:00007726 mov.b #1, r0l ; go to sleep ROM:00007728 mov.b r0l, @SSU_SSTDR:16 ROM:0000772C ROM:0000772C loc_772C: ; CODE XREF: accelReadSample+88j ROM:0000772C mov.b @SSU_SSSR:16, r0l ROM:00007730 bld #3, r0l ROM:00007732 bcc loc_772C:8 ROM:00007734 bset #0, @IO_PDR9:8 ; deselect accel ROM:00007738 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ; graba sample into our buffer of 16 samples ROM:0000773C extu.w r0 ROM:0000773E mov.b @(1:16,er5), r1l ; acc.x ROM:00007742 mov.b r1l, @(ACCEL_SAMPLES_X,er0) ROM:00007746 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000774A extu.w r0 ROM:0000774C mov.b @(3:16,er5), r1l ; acc.y ROM:00007750 mov.b r1l, @(ACCEL_SAMPLES_Y,er0) ROM:00007754 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:00007758 extu.w r0 ROM:0000775A mov.b @(5:16,er5), r1l ; acc.z ROM:0000775E mov.b r1l, @(ACCEL_SAMPLES_Z,er0) ROM:00007762 mov.b @currentlyActiveView:16, r0l ROM:00007766 cmp.b #0x17, r0l ROM:00007768 bne loc_7876:16 ROM:0000776C mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r4l ROM:00007770 add.b #0x3F, r4l ; '?' ROM:00007772 and.b #0x3F, r4l ROM:00007774 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:00007778 bne loc_7788:8 ROM:0000777A sub.w r0, r0 ROM:0000777C mov.w r0, @gCurSubstateB:16 ; Substate: ROM:0000777C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00007780 mov.w r0, @gCurSubstateC:16 ROM:00007784 mov.w r0, @gCurSubstateE:16 ; ubstate for various modes ROM:00007784 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00007788 ROM:00007788 loc_7788: ; CODE XREF: accelReadSample+CEj ROM:00007788 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000778C extu.w r0 ROM:0000778E mov.b @(ACCEL_SAMPLES_X,er0), r0l ROM:00007792 exts.w r0 ROM:00007794 extu.w r4 ROM:00007796 mov.w r4, r6 ROM:00007798 mov.b @(ACCEL_SAMPLES_X,er4), r4l ROM:0000779C exts.w r4 ROM:0000779E sub.w r4, r0 ROM:000077A0 mov.w r0, r0 ROM:000077A2 blt loc_77BA:8 ROM:000077A4 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:000077A8 extu.w r0 ROM:000077AA mov.b @(ACCEL_SAMPLES_X,er0), r0l ROM:000077AE exts.w r0 ROM:000077B0 mov.b @(ACCEL_SAMPLES_X,er6), r1l ROM:000077B4 exts.w r1 ROM:000077B6 sub.w r1, r0 ROM:000077B8 bra loc_77D0:8 ROM:000077BA ; --------------------------------------------------------------------------- ROM:000077BA ROM:000077BA loc_77BA: ; CODE XREF: accelReadSample+F8j ROM:000077BA mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:000077BE extu.w r0 ROM:000077C0 mov.b @(ACCEL_SAMPLES_X,er0), r0l ROM:000077C4 exts.w r0 ROM:000077C6 neg.w r0 ROM:000077C8 mov.b @(ACCEL_SAMPLES_X,er6), r1l ROM:000077CC exts.w r1 ROM:000077CE add.w r1, r0 ROM:000077D0 ROM:000077D0 loc_77D0: ; CODE XREF: accelReadSample+10Ej ROM:000077D0 mov.w @gCurSubstateB:16, e0 ; Substate: ROM:000077D0 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000077D4 add.w r0, e0 ROM:000077D6 mov.w e0, @gCurSubstateB:16 ; Substate: ROM:000077D6 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000077DA mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:000077DE extu.w r0 ROM:000077E0 mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:000077E4 exts.w r0 ROM:000077E6 mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:000077EA exts.w r1 ROM:000077EC sub.w r1, r0 ROM:000077EE mov.w r0, r0 ROM:000077F0 blt loc_7808:8 ROM:000077F2 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:000077F6 extu.w r0 ROM:000077F8 mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:000077FC exts.w r0 ROM:000077FE mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:00007802 exts.w r1 ROM:00007804 sub.w r1, r0 ROM:00007806 bra loc_781E:8 ROM:00007808 ; --------------------------------------------------------------------------- ROM:00007808 ROM:00007808 loc_7808: ; CODE XREF: accelReadSample+146j ROM:00007808 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000780C extu.w r0 ROM:0000780E mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:00007812 exts.w r0 ROM:00007814 neg.w r0 ROM:00007816 mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:0000781A exts.w r1 ROM:0000781C add.w r1, r0 ROM:0000781E ROM:0000781E loc_781E: ; CODE XREF: accelReadSample+15Cj ROM:0000781E mov.w @gCurSubstateC:16, e0 ROM:00007822 add.w r0, e0 ROM:00007824 mov.w e0, @gCurSubstateC:16 ROM:00007828 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000782C extu.w r0 ROM:0000782E mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:00007832 exts.w r0 ROM:00007834 mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:00007838 exts.w r1 ROM:0000783A sub.w r1, r0 ROM:0000783C mov.w r0, r0 ROM:0000783E blt loc_7856:8 ROM:00007840 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:00007844 extu.w r0 ROM:00007846 mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:0000784A exts.w r0 ROM:0000784C mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:00007850 exts.w r1 ROM:00007852 sub.w r1, r0 ROM:00007854 bra loc_786C:8 ROM:00007856 ; --------------------------------------------------------------------------- ROM:00007856 ROM:00007856 loc_7856: ; CODE XREF: accelReadSample+194j ROM:00007856 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000785A extu.w r0 ROM:0000785C mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:00007860 exts.w r0 ROM:00007862 neg.w r0 ROM:00007864 mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:00007868 exts.w r1 ROM:0000786A add.w r1, r0 ROM:0000786C ROM:0000786C loc_786C: ; CODE XREF: accelReadSample+1AAj ROM:0000786C mov.w @gCurSubstateE:16, e0 ; ubstate for various modes ROM:0000786C ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00007870 add.w r0, e0 ROM:00007872 mov.w e0, @gCurSubstateE:16 ; ubstate for various modes ROM:00007872 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00007876 ROM:00007876 loc_7876: ; CODE XREF: accelReadSample+BEj ROM:00007876 add.w #6, r7 ROM:0000787A pop.w r6 ROM:0000787C pop.w r5 ROM:0000787E pop.w r4 ROM:00007880 rts ROM:00007880 ; End of function accelReadSample ROM:00007880 ROM:00007882 ROM:00007882 ; =============== S U B R O U T I N E ======================================= ROM:00007882 ROM:00007882 ROM:00007882 sleepModeEventLoop: ; DATA XREF: performActionAsRequestedByRemote+210o ROM:00007882 ; ENTRY+D0o ... ROM:00007882 bset #0b10, @IRQ_IENR2:8 ROM:00007886 mov.w #1, r0 ROM:0000788A jsr deviceSleep:24 ROM:0000788E bclr #2, @IRQ_IENR2:8 ROM:00007892 bclr #7, @IRQ_IENR1:8 ROM:00007896 jsr accelReadSample:24 ; only shows anythig onscreen if view is 0x17 (23) ROM:0000789A bset #7, @IRQ_IENR1:8 ROM:0000789E jsr likelyKeyDebounceRoutine:24 ROM:000078A2 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:000078A2 ; 0x04 - have walking poke ROM:000078A6 and.b #0x18, r0l ROM:000078A8 bne loc_78C8:8 ROM:000078AA jsr sub_A34A:24 ROM:000078AE jsr accelProcessDataDetectStep:24 ROM:000078B2 mov.b r0l, r0l ROM:000078B4 bne loc_78C0:8 ROM:000078B6 mov.b @common_bit_flags:16, r0l ROM:000078BA bld #3, r0l ROM:000078BC bcc loc_798A:16 ROM:000078C0 ROM:000078C0 loc_78C0: ; CODE XREF: sleepModeEventLoop+32j ROM:000078C0 jsr sub_A180:24 ROM:000078C4 jmp loc_798A:24 ROM:000078C8 ; --------------------------------------------------------------------------- ROM:000078C8 ROM:000078C8 loc_78C8: ; CODE XREF: sleepModeEventLoop+26j ROM:000078C8 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:000078C8 ; 0x04 - have walking poke ROM:000078CC and.b #0x18, r0l ROM:000078CE cmp.b #0x10, r0l ROM:000078D0 bne loc_78E8:8 ROM:000078D2 jsr maybefindRandomItem_NOT_SURE:24 ROM:000078D6 jsr interactionHandler:24 ROM:000078DA mov.w @currentEventLoopFunc:16, r0 ROM:000078DE mov.w #irCommsEventLoop, r1 ROM:000078E2 cmp.w r1, r0 ROM:000078E4 beq loc_798A:16 ROM:000078E8 ROM:000078E8 loc_78E8: ; CODE XREF: sleepModeEventLoop+4Ej ROM:000078E8 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:000078E8 ; 0x04 - have walking poke ROM:000078EC bld #1, r0l ROM:000078EE bcc loc_78FE:8 ROM:000078F0 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:000078F4 cmp.b #0x3F, r0l ; '?' ROM:000078F6 bne loc_78FE:8 ROM:000078F8 jsr processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded:24 ROM:000078FC bra loc_796E:8 ROM:000078FE ; --------------------------------------------------------------------------- ROM:000078FE ROM:000078FE loc_78FE: ; CODE XREF: sleepModeEventLoop+6Cj ROM:000078FE ; sleepModeEventLoop+74j ROM:000078FE mov.b @common_bit_flags:16, r0l ROM:00007902 bld #0, r0l ROM:00007904 bcc loc_7932:8 ROM:00007906 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00007906 ; 0x04 - have walking poke ROM:0000790A and.b #0x18, r0l ROM:0000790C cmp.b #0x10, r0l ROM:0000790E bne loc_7928:8 ROM:00007910 mov.b #0x40, r0l ; '@' ROM:00007912 jsr someLcdRelatedThing:24 ROM:00007916 jsr maybe_viewDoDisplay:24 ROM:0000791A jsr someLcdThingYetAgain:24 ROM:0000791E mov.b @curUiFlags:16, r0l ; bits: ROM:0000791E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000791E ; 0x02 - slower animation frame ROM:00007922 inc.b r0l ROM:00007924 mov.b r0l, @curUiFlags:16 ; bits: ROM:00007924 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00007924 ; 0x02 - slower animation frame ROM:00007928 ROM:00007928 loc_7928: ; CODE XREF: sleepModeEventLoop+8Cj ROM:00007928 mov.w #common_bit_flags, r0 ROM:0000792C bclr #0, @er0 ROM:00007930 bra loc_796E:8 ROM:00007932 ; --------------------------------------------------------------------------- ROM:00007932 ROM:00007932 loc_7932: ; CODE XREF: sleepModeEventLoop+82j ROM:00007932 jsr sub_A34A:24 ROM:00007936 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00007936 ; 0x04 - have walking poke ROM:0000793A and.b #0x18, r0l ROM:0000793C cmp.b #0x10, r0l ROM:0000793E bne loc_7962:8 ROM:00007940 mov.b @byte_FFF7AF:16, r0l ROM:00007944 bne loc_796E:8 ROM:00007946 jsr lcdEnterPowerSaveMode:24 ROM:0000794A mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000794A ; 0x04 - have walking poke ROM:0000794E and.b #0xE7, r0l ROM:00007950 or.b #8, r0l ROM:00007952 mov.b r0l, @walker_status_flags:16 ; 0x02 - walker inited ROM:00007952 ; 0x04 - have walking poke ROM:00007956 sub.b r0l, r0l ROM:00007958 mov.b r0l, @byte_FFF7BB:16 ROM:0000795C mov.b r0l, @byte_FFF79B:16 ROM:00007960 bra loc_796E:8 ROM:00007962 ; --------------------------------------------------------------------------- ROM:00007962 ROM:00007962 loc_7962: ; CODE XREF: sleepModeEventLoop+BCj ROM:00007962 ldc.b #0x80, ccr ; 'Ç' ROM:00007964 jsr measureBatteryAndSetGlobalFalgWhetherItIsLow:24 ROM:00007968 ldc.b #0, ccr ROM:0000796A jsr sub_A2F6:24 ROM:0000796E ROM:0000796E loc_796E: ; CODE XREF: sleepModeEventLoop+7Aj ROM:0000796E ; sleepModeEventLoop+AEj ... ROM:0000796E jsr accountForStepTakenLikely:24 ROM:00007972 jsr is_F7C4_nonzero:24 ROM:00007976 mov.b r0l, r0l ROM:00007978 beq loc_798A:8 ROM:0000797A mov.w #normalModeEventLoop, r0 ROM:0000797E jsr setEventLoopFunc:24 ROM:00007982 bclr #2, @IRQ_IENR2:8 ROM:00007986 jsr sub_37D6:24 ROM:0000798A ROM:0000798A loc_798A: ; CODE XREF: sleepModeEventLoop+3Aj ROM:0000798A ; sleepModeEventLoop+42j ... ROM:0000798A mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000798E add.b #1, r0l ROM:00007990 and.b #0x3F, r0l ROM:00007992 mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:00007996 rts ROM:00007996 ; End of function sleepModeEventLoop ROM:00007996 ROM:00007998 ROM:00007998 ; =============== S U B R O U T I N E ======================================= ROM:00007998 ROM:00007998 ROM:00007998 normalModeEventLoop: ; DATA XREF: sleepModeEventLoop+F8o ROM:00007998 mov.b #0x27, r0l ; ''' ROM:0000799A mov.b r0l, @SYSCR1:8 ROM:0000799C mov.b #0xE0, r0l ; 'a' ROM:0000799E mov.b r0l, @SYSCR2:8 ROM:000079A0 mov.w #common_bit_flags, r0 ROM:000079A4 bset #4, @er0 ROM:000079A8 mov.w @TMRW_GRA:16, r0 ROM:000079AC beq loc_79B0:8 ROM:000079AE sleep ROM:000079B0 ROM:000079B0 loc_79B0: ; CODE XREF: normalModeEventLoop+14j ROM:000079B0 jsr wdt_maybe_pet:24 ROM:000079B4 jsr likelyKeyDebounceRoutine:24 ROM:000079B8 jsr interactionHandler:24 ROM:000079BC mov.b @common_bit_flags:16, r0l ROM:000079C0 bld #0, r0l ROM:000079C2 bcc loc_79EE:8 ROM:000079C4 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:000079C4 ; 0x04 - have walking poke ROM:000079C8 and.b #0x18, r0l ROM:000079CA cmp.b #0x10, r0l ROM:000079CC bne loc_79E6:8 ROM:000079CE mov.b #0x40, r0l ; '@' ROM:000079D0 jsr someLcdRelatedThing:24 ROM:000079D4 jsr maybe_viewDoDisplay:24 ROM:000079D8 jsr someLcdThingYetAgain:24 ROM:000079DC mov.b @curUiFlags:16, r0l ; bits: ROM:000079DC ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000079DC ; 0x02 - slower animation frame ROM:000079E0 inc.b r0l ROM:000079E2 mov.b r0l, @curUiFlags:16 ; bits: ROM:000079E2 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000079E2 ; 0x02 - slower animation frame ROM:000079E6 ROM:000079E6 loc_79E6: ; CODE XREF: normalModeEventLoop+34j ROM:000079E6 mov.w #common_bit_flags, r0 ROM:000079EA bclr #0, @er0 ROM:000079EE ROM:000079EE loc_79EE: ; CODE XREF: normalModeEventLoop+2Aj ROM:000079EE jsr is_F7C4_nonzero:24 ROM:000079F2 mov.b r0l, r0l ROM:000079F4 bne locret_7A08:8 ROM:000079F6 jsr sub_3810:24 ROM:000079FA mov.w #sleepModeEventLoop, r0 ROM:000079FE jsr setEventLoopFunc:24 ROM:00007A02 sub.b r0l, r0l ROM:00007A04 mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:00007A08 ROM:00007A08 locret_7A08: ; CODE XREF: normalModeEventLoop+5Cj ROM:00007A08 rts ROM:00007A08 ; End of function normalModeEventLoop ROM:00007A08 ROM:00007A0A ROM:00007A0A ; =============== S U B R O U T I N E ======================================= ROM:00007A0A ROM:00007A0A ROM:00007A0A common_prologue_2: ; CODE XREF: factoryTestPerformIfNeededp ROM:00007A0A ; interactionHandlerp ... ROM:00007A0A subs #2, sp ROM:00007A0C push.l er3 ROM:00007A10 push.l er4 ROM:00007A14 push.l er5 ROM:00007A18 push.l er6 ROM:00007A1C mov.w @(0x12:16,sp), r6 ROM:00007A20 push.w r6 ROM:00007A22 mov.l er2, @(0x12:16,sp) ROM:00007A28 rts ROM:00007A28 ; End of function common_prologue_2 ROM:00007A28 ROM:00007A2A ; --------------------------------------------------------------------------- ROM:00007A2A ; START OF FUNCTION CHUNK FOR factoryTestPerformIfNeeded ROM:00007A2A ROM:00007A2A common_epologue_2: ; CODE XREF: factoryTestPerformIfNeeded+276j ROM:00007A2A ; interactionHandler+BAj ... ROM:00007A2A pop.l er6 ROM:00007A2E pop.l er5 ROM:00007A32 pop.l er4 ROM:00007A36 pop.l er3 ROM:00007A3A pop.l er2 ROM:00007A3E rts ROM:00007A3E ; END OF FUNCTION CHUNK FOR factoryTestPerformIfNeeded ROM:00007A40 ROM:00007A40 ; =============== S U B R O U T I N E ======================================= ROM:00007A40 ROM:00007A40 ; used to composite images before drawing ROM:00007A40 ; ( ROM:00007A40 ; r0l = imgW ROM:00007A40 ; r0h = imgH ROM:00007A40 ; e0 = imageDatPtrInRam ROM:00007A40 ; r1l = x ROM:00007A40 ; r1h = y ROM:00007A40 ; e1 = dstBuffer ROM:00007A40 ; [sp] = bufferWidth ROM:00007A40 ; [sp,2] = bufferHeight ROM:00007A40 ; ) ROM:00007A40 ROM:00007A40 drawImageToBuffer: ; CODE XREF: mainMenuDraw+A6p ROM:00007A40 ; mainMenuDraw+DCp ROM:00007A40 push.l er4 ROM:00007A44 push.w r5 ROM:00007A46 push.l er6 ROM:00007A4A sub.w #6, r7 ROM:00007A4E mov.b r0l, r4h ROM:00007A50 mov.w e0, e4 ROM:00007A52 mov.b r1h, r6l ROM:00007A54 shlr.b r0h ; r0h / 8 ROM:00007A56 shlr.b r0h ROM:00007A58 shlr.b r0h ROM:00007A5A mov.b r0h, @sp ROM:00007A5C mov.w e1, e0 ROM:00007A5E mov.b r6l, r2l ROM:00007A60 extu.w r2 ROM:00007A62 shar.w r2 ROM:00007A64 shar.w r2 ROM:00007A66 shar.w r2 ROM:00007A68 mov.b @(0x13:16,sp), r0l ROM:00007A6C extu.w r0 ROM:00007A6E mulxu.w r0, er2 ROM:00007A70 extu.w r1 ROM:00007A72 add.w r1, r2 ROM:00007A74 shll.w r2 ROM:00007A76 add.w r2, e0 ROM:00007A78 sub.b r0l, r0l ROM:00007A7A mov.b r0l, r4l ROM:00007A7C and.b #7, r6l ROM:00007A7E mov.b r6l, r1l ROM:00007A80 extu.w r1 ROM:00007A82 mov.w r1, e6 ROM:00007A84 mov.b @(0x13:16,sp), r1l ROM:00007A88 extu.w r1 ROM:00007A8A shll.w r1 ROM:00007A8C mov.w r1, e1 ROM:00007A8E mov.b r4h, r1l ROM:00007A90 extu.w r1 ROM:00007A92 shll.w r1 ROM:00007A94 mov.w r1, e3 ROM:00007A96 jmp loc_7B2A:24 ROM:00007A9A ; --------------------------------------------------------------------------- ROM:00007A9A ROM:00007A9A loc_7A9A: ; CODE XREF: drawImageToBuffer+F0j ROM:00007A9A sub.b r6l, r6l ROM:00007A9C bra loc_7B16:8 ROM:00007A9E ; --------------------------------------------------------------------------- ROM:00007A9E ROM:00007A9E loc_7A9E: ; CODE XREF: drawImageToBuffer+DAj ROM:00007A9E mov.b r6l, r5l ROM:00007AA0 extu.w r5 ROM:00007AA2 shll.w r5 ROM:00007AA4 mov.w r5, e5 ROM:00007AA6 mov.w e4, r5 ROM:00007AA8 add.w e5, r5 ROM:00007AAA mov.b @er5, r3h ROM:00007AAC mov.b @(1:16,er5), r3l ROM:00007AB0 add.w e0, e5 ROM:00007AB2 mov.w e5, r5 ROM:00007AB4 mov.b @er5, r6h ROM:00007AB6 mov.b r3h, r0l ROM:00007AB8 mov.w e6, r1 ROM:00007ABA ROM:00007ABA loc_7ABA: ; CODE XREF: drawImageToBuffer+80j ROM:00007ABA dec.b r1l ROM:00007ABC bmi loc_7AC2:8 ROM:00007ABE shll.b r0l ROM:00007AC0 bra loc_7ABA:8 ROM:00007AC2 ; --------------------------------------------------------------------------- ROM:00007AC2 ROM:00007AC2 loc_7AC2: ; CODE XREF: drawImageToBuffer+7Cj ROM:00007AC2 or.b r0l, r6h ROM:00007AC4 mov.b r6h, @er5 ROM:00007AC6 mov.b @(1:16,er5), r6h ROM:00007ACA mov.b r3l, r0l ROM:00007ACC mov.w e6, r1 ROM:00007ACE ROM:00007ACE loc_7ACE: ; CODE XREF: drawImageToBuffer+94j ROM:00007ACE dec.b r1l ROM:00007AD0 bmi loc_7AD6:8 ROM:00007AD2 shll.b r0l ROM:00007AD4 bra loc_7ACE:8 ROM:00007AD6 ; --------------------------------------------------------------------------- ROM:00007AD6 ROM:00007AD6 loc_7AD6: ; CODE XREF: drawImageToBuffer+90j ROM:00007AD6 or.b r0l, r6h ROM:00007AD8 mov.b r6h, @(1:16,er5) ROM:00007ADC mov.b @(0x13:16,sp), r0l ROM:00007AE0 extu.w r0 ROM:00007AE2 extu.w r6 ROM:00007AE4 add.w r6, r0 ROM:00007AE6 shll.w r0 ROM:00007AE8 add.w e0, r0 ROM:00007AEA mov.w r0, r5 ROM:00007AEC mov.b @er0, r6h ROM:00007AEE mov.w #8, e5 ROM:00007AF2 sub.w e6, e5 ROM:00007AF4 mov.w e5, r1 ROM:00007AF6 ROM:00007AF6 loc_7AF6: ; CODE XREF: drawImageToBuffer+BCj ROM:00007AF6 dec.b r1l ROM:00007AF8 bmi loc_7AFE:8 ROM:00007AFA shlr.b r3h ROM:00007AFC bra loc_7AF6:8 ROM:00007AFE ; --------------------------------------------------------------------------- ROM:00007AFE ROM:00007AFE loc_7AFE: ; CODE XREF: drawImageToBuffer+B8j ROM:00007AFE or.b r3h, r6h ROM:00007B00 mov.b r6h, @er5 ROM:00007B02 mov.b @(1:16,er5), r6h ROM:00007B06 ROM:00007B06 loc_7B06: ; CODE XREF: drawImageToBuffer+CCj ROM:00007B06 dec.w #1, e5 ROM:00007B08 bmi loc_7B0E:8 ROM:00007B0A shlr.b r3l ROM:00007B0C bra loc_7B06:8 ROM:00007B0E ; --------------------------------------------------------------------------- ROM:00007B0E ROM:00007B0E loc_7B0E: ; CODE XREF: drawImageToBuffer+C8j ROM:00007B0E or.b r3l, r6h ROM:00007B10 mov.b r6h, @(1:16,er5) ROM:00007B14 inc.b r6l ROM:00007B16 ROM:00007B16 loc_7B16: ; CODE XREF: drawImageToBuffer+5Cj ROM:00007B16 mov.b r4h, r0l ROM:00007B18 cmp.b r0l, r6l ROM:00007B1A bcs loc_7A9E:8 ROM:00007B1C add.w e1, e0 ROM:00007B1E mov.w e4, r0 ROM:00007B20 add.w e3, r0 ROM:00007B22 mov.w r0, e4 ROM:00007B24 mov.b r4l, r0l ROM:00007B26 inc.b r0l ROM:00007B28 mov.b r0l, r4l ROM:00007B2A ROM:00007B2A loc_7B2A: ; CODE XREF: drawImageToBuffer+56j ROM:00007B2A mov.b r4l, r0l ROM:00007B2C mov.b @sp, r0h ROM:00007B2E cmp.b r0h, r0l ROM:00007B30 bcs loc_7A9A:16 ROM:00007B34 add.w #6, r7 ROM:00007B38 pop.l er6 ROM:00007B3C pop.w r5 ROM:00007B3E pop.l er4 ROM:00007B42 rts ROM:00007B42 ; End of function drawImageToBuffer ROM:00007B42 ROM:00007B44 ROM:00007B44 ; =============== S U B R O U T I N E ======================================= ROM:00007B44 ROM:00007B44 ; (r0l = cmd) ROM:00007B44 ROM:00007B44 lcdSendSingleByteCommand: ; CODE XREF: initLcdUsingRomOrEepromCommands+30p ROM:00007B44 ; initLcdUsingRomOrEepromCommands+6Cp ... ROM:00007B44 mov.b r0l, r0h ROM:00007B46 bclr #0, @IO_PDR1:8 ROM:00007B4A ROM:00007B4A loc_7B4A: ; CODE XREF: lcdSendSingleByteCommand+Cj ROM:00007B4A mov.b @SSU_SSSR:16, r0l ROM:00007B4E bld #2, r0l ROM:00007B50 bcc loc_7B4A:8 ROM:00007B52 mov.b r0h, @SSU_SSTDR:16 ROM:00007B56 ROM:00007B56 loc_7B56: ; CODE XREF: lcdSendSingleByteCommand+18j ROM:00007B56 mov.b @SSU_SSSR:16, r0l ROM:00007B5A bld #3, r0l ROM:00007B5C bcc loc_7B56:8 ROM:00007B5E bset #0, @IO_PDR1:8 ROM:00007B62 rts ROM:00007B62 ; End of function lcdSendSingleByteCommand ROM:00007B62 ROM:00007B64 ROM:00007B64 ; =============== S U B R O U T I N E ======================================= ROM:00007B64 ROM:00007B64 ROM:00007B64 smallDelay: ; CODE XREF: initLcdUsingRomOrEepromCommands:loc_7BCAp ROM:00007B64 mov.w #0x64, r2 ; 'd' ROM:00007B68 ROM:00007B68 loc_7B68: ; CODE XREF: smallDelay+Aj ROM:00007B68 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:00007B6C dec.w #1, r2 ROM:00007B6E bne loc_7B68:8 ROM:00007B70 rts ROM:00007B70 ; End of function smallDelay ROM:00007B70 ROM:00007B72 ROM:00007B72 ; =============== S U B R O U T I N E ======================================= ROM:00007B72 ROM:00007B72 ROM:00007B72 initLcdUsingRomOrEepromCommands: ; CODE XREF: performActionAsRequestedByRemote:loc_108p ROM:00007B72 ; performActionAsRequestedByRemote:loc_128p ... ROM:00007B72 push.w r2 ROM:00007B74 push.l er6 ROM:00007B78 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00007B7C mov.w #0x40, r0 ; '@' ROM:00007B80 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00007B84 mov.w r0, r6 ROM:00007B86 mov.w r0, r1 ROM:00007B88 mov.w #0x40, e1 ; '@' ROM:00007B8C mov.l #0x1AC00AC, er0 ROM:00007B92 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:00007B92 ; ROM:00007B92 ; data is stored in two provided locations and read to RAM ROM:00007B92 ; each location includes a checksum right after the data (not inluded in length) ROM:00007B92 ; ROM:00007B92 ; if only one location has checksum-valid data, other is replaced with it ROM:00007B92 ; ROM:00007B92 ; if both appear valid, #0 is assumed dominant ROM:00007B92 ; ROM:00007B92 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:00007B96 mov.b #0x80, r0l ; 'Ç' ROM:00007B98 mov.b r0l, @SSU_SSER:16 ROM:00007B9C bclr #1, @IO_PDR1:8 ROM:00007BA0 mov.b #0xE1, r0l ; 'ß' ; exit power save mode ROM:00007BA2 bsr lcdSendSingleByteCommand:8 ; (r0l = cmd) ROM:00007BA4 mov.b @er6, r0l ROM:00007BA6 beq loc_7BAC:8 ROM:00007BA8 cmp.b #0xFF, r0l ROM:00007BAA bne loc_7BB0:8 ROM:00007BAC ROM:00007BAC loc_7BAC: ; CODE XREF: initLcdUsingRomOrEepromCommands+34j ROM:00007BAC mov.w #ROM_LCD_INIT_COMMANDS, r6 ROM:00007BB0 ROM:00007BB0 loc_7BB0: ; CODE XREF: initLcdUsingRomOrEepromCommands+38j ROM:00007BB0 mov.w r6, r0 ROM:00007BB2 inc.w #1, r6 ROM:00007BB4 mov.b @er0, r0l ROM:00007BB6 mov.b r0l, @base_contrast_value:16 ROM:00007BBA ROM:00007BBA loc_7BBA: ; CODE XREF: initLcdUsingRomOrEepromCommands+70j ROM:00007BBA mov.b @er6, r0l ROM:00007BBC cmp.b #0xFE, r0l ; '¦' ROM:00007BBE beq lcd_config_done:8 ROM:00007BC0 cmp.b #0xFD, r0l ; '²' ROM:00007BC2 bne loc_7BD8:8 ROM:00007BC4 inc.w #1, r6 ROM:00007BC6 sub.w e6, e6 ROM:00007BC8 bra loc_7BCE:8 ROM:00007BCA ; --------------------------------------------------------------------------- ROM:00007BCA ROM:00007BCA loc_7BCA: ; CODE XREF: initLcdUsingRomOrEepromCommands+62j ROM:00007BCA bsr smallDelay:8 ROM:00007BCC inc.w #1, e6 ROM:00007BCE ROM:00007BCE loc_7BCE: ; CODE XREF: initLcdUsingRomOrEepromCommands+56j ROM:00007BCE mov.b @er6, r0l ROM:00007BD0 extu.w r0 ROM:00007BD2 cmp.w r0, e6 ROM:00007BD4 bcs loc_7BCA:8 ROM:00007BD6 inc.w #1, r6 ROM:00007BD8 ROM:00007BD8 loc_7BD8: ; CODE XREF: initLcdUsingRomOrEepromCommands+50j ROM:00007BD8 mov.w r6, r0 ROM:00007BDA inc.w #1, r6 ROM:00007BDC mov.b @er0, r0l ROM:00007BDE jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007BE2 bra loc_7BBA:8 ROM:00007BE4 ; --------------------------------------------------------------------------- ROM:00007BE4 ROM:00007BE4 lcd_config_done: ; CODE XREF: initLcdUsingRomOrEepromCommands+4Cj ROM:00007BE4 mov.b #0xA6, r0l ; 'ª' ROM:00007BE6 jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007BEA mov.b @RamCache_settingsByte:16, r0h ROM:00007BEE shlr.b r0h ROM:00007BF0 shlr.b r0h ROM:00007BF2 shlr.b r0h ROM:00007BF4 and.b #0xF, r0h ROM:00007BF6 mov.b r0h, r0l ROM:00007BF8 bsr lcdSetContrast:8 ; (u8 contrast) //incremented y base_contrast_value ROM:00007BFA mov.b #1, r0l ROM:00007BFC mov.b r0l, @byte_FFF7E4:16 ROM:00007C00 mov.b #0x40, r0l ; '@' ROM:00007C02 jsr someLcdRelatedThing:24 ROM:00007C06 sub.b r0l, r0l ROM:00007C08 mov.b r0l, @byte_FFF7E4:16 ROM:00007C0C mov.b #0x40, r0l ; '@' ROM:00007C0E jsr someLcdRelatedThing:24 ROM:00007C12 bclr #1, @IO_PDR1:8 ROM:00007C16 mov.b #0xAF, r0l ; '»' ROM:00007C18 jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007C1C pop.l er6 ROM:00007C20 pop.w r2 ROM:00007C22 rts ROM:00007C22 ; End of function initLcdUsingRomOrEepromCommands ROM:00007C22 ROM:00007C24 ROM:00007C24 ; =============== S U B R O U T I N E ======================================= ROM:00007C24 ROM:00007C24 ; (u8 contrast) //incremented y base_contrast_value ROM:00007C24 ROM:00007C24 lcdSetContrast: ; CODE XREF: performActionAsRequestedByRemote+D8p ROM:00007C24 ; sub_6D6C+42p ... ROM:00007C24 push.w r6 ROM:00007C26 mov.b r0l, r6l ROM:00007C28 mov.b #0x80, r0h ; 'Ç' ROM:00007C2A mov.b r0h, @SSU_SSER:16 ROM:00007C2E bclr #0, @IO_PDR1:8 ROM:00007C32 bclr #1, @IO_PDR1:8 ROM:00007C36 mov.b #0x81, r0l ; 'ü' ; set contrast ROM:00007C38 jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007C3C mov.b @base_contrast_value:16, r0l ROM:00007C40 add.b r6l, r0l ROM:00007C42 jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007C46 ROM:00007C46 loc_7C46: ; CODE XREF: lcdSetContrast+28j ROM:00007C46 mov.b @SSU_SSSR:16, r0l ROM:00007C4A bld #3, r0l ROM:00007C4C bcc loc_7C46:8 ROM:00007C4E bset #0, @IO_PDR1:8 ROM:00007C52 pop.w r6 ROM:00007C54 rts ROM:00007C54 ; End of function lcdSetContrast ROM:00007C54 ROM:00007C56 ROM:00007C56 ; =============== S U B R O U T I N E ======================================= ROM:00007C56 ROM:00007C56 ROM:00007C56 lcdRelatedWTF: ; CODE XREF: sub_A962+14p ROM:00007C56 ; sub_AC1E+Ep ... ROM:00007C56 mov.b r0l, r1h ROM:00007C58 mov.b r0h, r3h ROM:00007C5A bclr #1, @IO_PDR1:8 ROM:00007C5E ROM:00007C5E loc_7C5E: ; CODE XREF: lcdRelatedWTF+Ej ROM:00007C5E mov.b @SSU_SSSR:16, r0l ROM:00007C62 bld #2, r0l ROM:00007C64 bcc loc_7C5E:8 ROM:00007C66 mov.b r1h, r0l ROM:00007C68 mov.b #0x10, r1l ROM:00007C6A sub.b r0h, r0h ROM:00007C6C divxu.b r1l, r0 ROM:00007C6E and.b #7, r0l ROM:00007C70 add.b #0x10, r0l ROM:00007C72 mov.b r0l, @SSU_SSTDR:16 ROM:00007C76 ROM:00007C76 loc_7C76: ; CODE XREF: lcdRelatedWTF+26j ROM:00007C76 mov.b @SSU_SSSR:16, r0l ROM:00007C7A bld #2, r0l ROM:00007C7C bcc loc_7C76:8 ROM:00007C7E and.b #0xF, r1h ROM:00007C80 mov.b r1h, @SSU_SSTDR:16 ROM:00007C84 cmp.b #7, r3h ROM:00007C86 bls loc_7C8A:8 ROM:00007C88 sleep ROM:00007C8A ROM:00007C8A loc_7C8A: ; CODE XREF: lcdRelatedWTF+30j ROM:00007C8A ; lcdRelatedWTF+3Aj ROM:00007C8A mov.b @SSU_SSSR:16, r0l ROM:00007C8E bld #2, r0l ROM:00007C90 bcc loc_7C8A:8 ROM:00007C92 mov.b @byte_FFF7E4:16, r0l ROM:00007C96 mov.b #8, r0h ROM:00007C98 mulxu.b r0h, r0 ROM:00007C9A add.b r3h, r0l ROM:00007C9C add.b #0xB0, r0l ; '¦' ROM:00007C9E mov.b r0l, @SSU_SSTDR:16 ROM:00007CA2 ROM:00007CA2 loc_7CA2: ; CODE XREF: lcdRelatedWTF+52j ROM:00007CA2 mov.b @SSU_SSSR:16, r0l ROM:00007CA6 bld #3, r0l ROM:00007CA8 bcc loc_7CA2:8 ROM:00007CAA rts ROM:00007CAA ; End of function lcdRelatedWTF ROM:00007CAA ROM:00007CAC ROM:00007CAC ; =============== S U B R O U T I N E ======================================= ROM:00007CAC ROM:00007CAC ROM:00007CAC someLcdThingYetAgain: ; CODE XREF: goToConnectionMicroApp+20p ROM:00007CAC ; goToConnectionMicroApp+44p ... ROM:00007CAC mov.w #byte_FFF7E4, r1 ROM:00007CB0 mov.b #0x80, r0l ; 'Ç' ROM:00007CB2 mov.b r0l, @SSU_SSER:16 ROM:00007CB6 bclr #0, @IO_PDR1:8 ROM:00007CBA bclr #1, @IO_PDR1:8 ROM:00007CBE ROM:00007CBE loc_7CBE: ; CODE XREF: someLcdThingYetAgain+18j ROM:00007CBE mov.b @SSU_SSSR:16, r0l ROM:00007CC2 bld #2, r0l ROM:00007CC4 bcc loc_7CBE:8 ROM:00007CC6 mov.b #0x40, r0l ; '@' ROM:00007CC8 mov.b r0l, @SSU_SSTDR:16 ROM:00007CCC ROM:00007CCC loc_7CCC: ; CODE XREF: someLcdThingYetAgain+26j ROM:00007CCC mov.b @SSU_SSSR:16, r0l ROM:00007CD0 bld #2, r0l ROM:00007CD2 bcc loc_7CCC:8 ROM:00007CD4 mov.b @er1, r0l ROM:00007CD6 mov.b #0x40, r0h ; '@' ROM:00007CD8 mulxu.b r0h, r0 ROM:00007CDA mov.b r0l, @SSU_SSTDR:16 ROM:00007CDE ROM:00007CDE loc_7CDE: ; CODE XREF: someLcdThingYetAgain+38j ROM:00007CDE mov.b @SSU_SSSR:16, r0l ROM:00007CE2 bld #3, r0l ROM:00007CE4 bcc loc_7CDE:8 ROM:00007CE6 ROM:00007CE6 loc_7CE6: ; CODE XREF: someLcdThingYetAgain+40j ROM:00007CE6 mov.b @SSU_SSSR:16, r0l ROM:00007CEA bld #3, r0l ROM:00007CEC bcc loc_7CE6:8 ROM:00007CEE bset #0, @IO_PDR1:8 ROM:00007CF2 mov.b @er1, r0l ROM:00007CF4 xor.b #1, r0l ROM:00007CF6 mov.b r0l, @er1 ROM:00007CF8 rts ROM:00007CF8 ; End of function someLcdThingYetAgain ROM:00007CF8 ROM:00007CFA ROM:00007CFA ; =============== S U B R O U T I N E ======================================= ROM:00007CFA ROM:00007CFA ROM:00007CFA screenShenenigans: ; CODE XREF: irCommsEventLoop+F2p ROM:00007CFA ; irCommsEventLoop+F66p ROM:00007CFA mov.b r0l, r1l ROM:00007CFC cmp.b #1, r1l ROM:00007CFE bhi locret_7D48:8 ROM:00007D00 mov.b #0x80, r0l ; 'Ç' ROM:00007D02 mov.b r0l, @SSU_SSER:16 ROM:00007D06 bclr #0, @IO_PDR1:8 ROM:00007D0A bclr #1, @IO_PDR1:8 ROM:00007D0E ROM:00007D0E loc_7D0E: ; CODE XREF: screenShenenigans+1Aj ROM:00007D0E mov.b @SSU_SSSR:16, r0l ROM:00007D12 bld #2, r0l ROM:00007D14 bcc loc_7D0E:8 ROM:00007D16 mov.b #0x40, r0l ; '@' ROM:00007D18 mov.b r0l, @SSU_SSTDR:16 ROM:00007D1C ROM:00007D1C loc_7D1C: ; CODE XREF: screenShenenigans+28j ROM:00007D1C mov.b @SSU_SSSR:16, r0l ROM:00007D20 bld #2, r0l ROM:00007D22 bcc loc_7D1C:8 ROM:00007D24 mov.b r1l, r0l ROM:00007D26 mov.b #0x40, r0h ; '@' ROM:00007D28 mulxu.b r0h, r0 ROM:00007D2A mov.b r0l, @SSU_SSTDR:16 ROM:00007D2E ROM:00007D2E loc_7D2E: ; CODE XREF: screenShenenigans+3Aj ROM:00007D2E mov.b @SSU_SSSR:16, r0l ROM:00007D32 bld #3, r0l ROM:00007D34 bcc loc_7D2E:8 ROM:00007D36 ROM:00007D36 loc_7D36: ; CODE XREF: screenShenenigans+42j ROM:00007D36 mov.b @SSU_SSSR:16, r0l ROM:00007D3A bld #3, r0l ROM:00007D3C bcc loc_7D36:8 ROM:00007D3E bset #0, @IO_PDR1:8 ROM:00007D42 xor.b #1, r1l ROM:00007D44 mov.b r1l, @byte_FFF7E4:16 ROM:00007D48 ROM:00007D48 locret_7D48: ; CODE XREF: screenShenenigans+4j ROM:00007D48 rts ROM:00007D48 ; End of function screenShenenigans ROM:00007D48 ROM:00007D4A ROM:00007D4A ; =============== S U B R O U T I N E ======================================= ROM:00007D4A ROM:00007D4A ROM:00007D4A lcdRelatedWTFZYX: ; CODE XREF: drawSomethingWithTinyChars:loc_AD7Cp ROM:00007D4A mov.b r0l, r3l ROM:00007D4C mov.b #0x80, r0h ; 'Ç' ROM:00007D4E mov.b r0h, @SSU_SSER:16 ROM:00007D52 bclr #0, @IO_PDR1:8 ROM:00007D56 sub.b r1l, r1l ROM:00007D58 ROM:00007D58 loc_7D58: ; CODE XREF: lcdRelatedWTFZYX+FCj ROM:00007D58 mov.b r1l, r1h ROM:00007D5A bclr #1, @IO_PDR1:8 ROM:00007D5E ROM:00007D5E loc_7D5E: ; CODE XREF: lcdRelatedWTFZYX+1Aj ROM:00007D5E mov.b @SSU_SSSR:16, r0l ROM:00007D62 bld #2, r0l ROM:00007D64 bcc loc_7D5E:8 ROM:00007D66 mov.b #0x10, r0l ROM:00007D68 mov.b r0l, @SSU_SSTDR:16 ROM:00007D6C ROM:00007D6C loc_7D6C: ; CODE XREF: lcdRelatedWTFZYX+28j ROM:00007D6C mov.b @SSU_SSSR:16, r0l ROM:00007D70 bld #2, r0l ROM:00007D72 bcc loc_7D6C:8 ROM:00007D74 sub.b r0l, r0l ROM:00007D76 mov.b r0l, @SSU_SSTDR:16 ROM:00007D7A cmp.b #7, r1h ROM:00007D7C bls loc_7D80:8 ROM:00007D7E sleep ROM:00007D80 ROM:00007D80 loc_7D80: ; CODE XREF: lcdRelatedWTFZYX+32j ROM:00007D80 ; lcdRelatedWTFZYX+3Cj ROM:00007D80 mov.b @SSU_SSSR:16, r0l ROM:00007D84 bld #2, r0l ROM:00007D86 bcc loc_7D80:8 ROM:00007D88 mov.b @byte_FFF7E4:16, r0l ROM:00007D8C mov.b #8, r0h ROM:00007D8E mulxu.b r0h, r0 ROM:00007D90 add.b r1h, r0l ROM:00007D92 add.b #0xB0, r0l ; '¦' ROM:00007D94 mov.b r0l, @SSU_SSTDR:16 ROM:00007D98 ROM:00007D98 loc_7D98: ; CODE XREF: lcdRelatedWTFZYX+54j ROM:00007D98 mov.b @SSU_SSSR:16, r0l ROM:00007D9C bld #3, r0l ROM:00007D9E bcc loc_7D98:8 ROM:00007DA0 bset #1, @IO_PDR1:8 ROM:00007DA4 mov.b #0x60, r1h ; '`' ROM:00007DA6 jmp loc_7E34:24 ROM:00007DAA ; --------------------------------------------------------------------------- ROM:00007DAA ROM:00007DAA loc_7DAA: ; CODE XREF: lcdRelatedWTFZYX+ECj ROM:00007DAA mov.b r3l, r0l ROM:00007DAC beq loc_7DBC:8 ROM:00007DAE cmp.b #1, r0l ROM:00007DB0 beq loc_7DDA:8 ROM:00007DB2 cmp.b #2, r0l ROM:00007DB4 beq loc_7DF8:8 ROM:00007DB6 cmp.b #3, r0l ROM:00007DB8 bne loc_7E32:8 ROM:00007DBA bra loc_7E16:8 ROM:00007DBC ; --------------------------------------------------------------------------- ROM:00007DBC ROM:00007DBC loc_7DBC: ; CODE XREF: lcdRelatedWTFZYX+62j ROM:00007DBC ; lcdRelatedWTFZYX+78j ROM:00007DBC mov.b @SSU_SSSR:16, r0l ROM:00007DC0 bld #2, r0l ROM:00007DC2 bcc loc_7DBC:8 ROM:00007DC4 sub.b r0l, r0l ROM:00007DC6 mov.b r0l, @SSU_SSTDR:16 ROM:00007DCA ROM:00007DCA loc_7DCA: ; CODE XREF: lcdRelatedWTFZYX+86j ROM:00007DCA mov.b @SSU_SSSR:16, r0l ROM:00007DCE bld #2, r0l ROM:00007DD0 bcc loc_7DCA:8 ROM:00007DD2 sub.b r0l, r0l ROM:00007DD4 mov.b r0l, @SSU_SSTDR:16 ROM:00007DD8 bra loc_7E32:8 ROM:00007DDA ; --------------------------------------------------------------------------- ROM:00007DDA ROM:00007DDA loc_7DDA: ; CODE XREF: lcdRelatedWTFZYX+66j ROM:00007DDA ; lcdRelatedWTFZYX+96j ROM:00007DDA mov.b @SSU_SSSR:16, r0l ROM:00007DDE bld #2, r0l ROM:00007DE0 bcc loc_7DDA:8 ROM:00007DE2 sub.b r0l, r0l ROM:00007DE4 mov.b r0l, @SSU_SSTDR:16 ROM:00007DE8 ROM:00007DE8 loc_7DE8: ; CODE XREF: lcdRelatedWTFZYX+A4j ROM:00007DE8 mov.b @SSU_SSSR:16, r0l ROM:00007DEC bld #2, r0l ROM:00007DEE bcc loc_7DE8:8 ROM:00007DF0 mov.b #0xFF, r0l ROM:00007DF2 mov.b r0l, @SSU_SSTDR:16 ROM:00007DF6 bra loc_7E32:8 ROM:00007DF8 ; --------------------------------------------------------------------------- ROM:00007DF8 ROM:00007DF8 loc_7DF8: ; CODE XREF: lcdRelatedWTFZYX+6Aj ROM:00007DF8 ; lcdRelatedWTFZYX+B4j ROM:00007DF8 mov.b @SSU_SSSR:16, r0l ROM:00007DFC bld #2, r0l ROM:00007DFE bcc loc_7DF8:8 ROM:00007E00 mov.b #0xFF, r0l ROM:00007E02 mov.b r0l, @SSU_SSTDR:16 ROM:00007E06 ROM:00007E06 loc_7E06: ; CODE XREF: lcdRelatedWTFZYX+C2j ROM:00007E06 mov.b @SSU_SSSR:16, r0l ROM:00007E0A bld #2, r0l ROM:00007E0C bcc loc_7E06:8 ROM:00007E0E sub.b r0l, r0l ROM:00007E10 mov.b r0l, @SSU_SSTDR:16 ROM:00007E14 bra loc_7E32:8 ROM:00007E16 ; --------------------------------------------------------------------------- ROM:00007E16 ROM:00007E16 loc_7E16: ; CODE XREF: lcdRelatedWTFZYX+70j ROM:00007E16 ; lcdRelatedWTFZYX+D2j ROM:00007E16 mov.b @SSU_SSSR:16, r0l ROM:00007E1A bld #2, r0l ROM:00007E1C bcc loc_7E16:8 ROM:00007E1E mov.b #0xFF, r0l ROM:00007E20 mov.b r0l, @SSU_SSTDR:16 ROM:00007E24 ROM:00007E24 loc_7E24: ; CODE XREF: lcdRelatedWTFZYX+E0j ROM:00007E24 mov.b @SSU_SSSR:16, r0l ROM:00007E28 bld #2, r0l ROM:00007E2A bcc loc_7E24:8 ROM:00007E2C mov.b #0xFF, r0l ROM:00007E2E mov.b r0l, @SSU_SSTDR:16 ROM:00007E32 ROM:00007E32 loc_7E32: ; CODE XREF: lcdRelatedWTFZYX+6Ej ROM:00007E32 ; lcdRelatedWTFZYX+8Ej ... ROM:00007E32 dec.b r1h ROM:00007E34 ROM:00007E34 loc_7E34: ; CODE XREF: lcdRelatedWTFZYX+5Cj ROM:00007E34 mov.b r1h, r1h ROM:00007E36 bne loc_7DAA:16 ROM:00007E3A ROM:00007E3A loc_7E3A: ; CODE XREF: lcdRelatedWTFZYX+F6j ROM:00007E3A mov.b @SSU_SSSR:16, r0l ROM:00007E3E bld #3, r0l ROM:00007E40 bcc loc_7E3A:8 ROM:00007E42 inc.b r1l ROM:00007E44 cmp.b #8, r1l ROM:00007E46 bcs loc_7D58:16 ROM:00007E4A ROM:00007E4A loc_7E4A: ; CODE XREF: lcdRelatedWTFZYX+106j ROM:00007E4A mov.b @SSU_SSSR:16, r0l ROM:00007E4E bld #3, r0l ROM:00007E50 bcc loc_7E4A:8 ROM:00007E52 bset #0, @IO_PDR1:8 ROM:00007E56 rts ROM:00007E56 ; End of function lcdRelatedWTFZYX ROM:00007E56 ROM:00007E58 ROM:00007E58 ; =============== S U B R O U T I N E ======================================= ROM:00007E58 ROM:00007E58 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:00007E58 ROM:00007E58 lcdFillRectangle: ; CODE XREF: drawNumberAndWattsymbolOnscreen+2Ep ROM:00007E58 ; battleScreenDraw+212p ... ROM:00007E58 push.w r4 ROM:00007E5A push.l er5 ROM:00007E5E push.l er6 ROM:00007E62 mov.b r0l, r5h ROM:00007E64 mov.b r0h, r6l ROM:00007E66 mov.b r1h, r5l ROM:00007E68 mov.b @(0xD:16,sp), r4l ROM:00007E6C mov.b #0x80, r2l ; 'Ç' ROM:00007E6E mov.b r2l, @SSU_SSER:16 ROM:00007E72 bclr #0, @IO_PDR1:8 ROM:00007E76 mov.b r6l, r6h ROM:00007E78 shlr.b r6h ROM:00007E7A shlr.b r6h ROM:00007E7C shlr.b r6h ROM:00007E7E mov.b r5h, r2l ROM:00007E80 extu.w r2 ROM:00007E82 extu.w r1 ROM:00007E84 add.w r1, r2 ROM:00007E86 mov.w r2, e6 ROM:00007E88 mov.b r6l, r1l ROM:00007E8A extu.w r1 ROM:00007E8C mov.b r5l, r2l ROM:00007E8E extu.w r2 ROM:00007E90 add.w r2, r1 ROM:00007E92 exts.l er1 ROM:00007E94 mov.w #8, e0 ROM:00007E98 divxs.w e0, er1 ROM:00007E9C mov.w r1, e5 ROM:00007E9E jmp loc_7F9E:24 ROM:00007EA2 ; --------------------------------------------------------------------------- ROM:00007EA2 ROM:00007EA2 loc_7EA2: ; CODE XREF: lcdFillRectangle+14Cj ROM:00007EA2 mov.b r6h, r5l ROM:00007EA4 mov.b r5h, r6l ROM:00007EA6 bclr #1, @IO_PDR1:8 ROM:00007EAA ROM:00007EAA loc_7EAA: ; CODE XREF: lcdFillRectangle+58j ROM:00007EAA mov.b @SSU_SSSR:16, r0l ROM:00007EAE bld #2, r0l ROM:00007EB0 bcc loc_7EAA:8 ROM:00007EB2 mov.b r6l, r0l ROM:00007EB4 mov.b #0x10, r1l ROM:00007EB6 sub.b r0h, r0h ROM:00007EB8 divxu.b r1l, r0 ROM:00007EBA and.b #7, r0l ROM:00007EBC add.b #0x10, r0l ROM:00007EBE mov.b r0l, @SSU_SSTDR:16 ROM:00007EC2 ROM:00007EC2 loc_7EC2: ; CODE XREF: lcdFillRectangle+70j ROM:00007EC2 mov.b @SSU_SSSR:16, r0l ROM:00007EC6 bld #2, r0l ROM:00007EC8 bcc loc_7EC2:8 ROM:00007ECA and.b #0xF, r6l ROM:00007ECC mov.b r6l, @SSU_SSTDR:16 ROM:00007ED0 cmp.b #7, r5l ROM:00007ED2 bls loc_7ED6:8 ROM:00007ED4 sleep ROM:00007ED6 ROM:00007ED6 loc_7ED6: ; CODE XREF: lcdFillRectangle+7Aj ROM:00007ED6 ; lcdFillRectangle+84j ROM:00007ED6 mov.b @SSU_SSSR:16, r0l ROM:00007EDA bld #2, r0l ROM:00007EDC bcc loc_7ED6:8 ROM:00007EDE mov.b @byte_FFF7E4:16, r0l ROM:00007EE2 mov.b #8, r0h ROM:00007EE4 mulxu.b r0h, r0 ROM:00007EE6 add.b r5l, r0l ROM:00007EE8 add.b #0xB0, r0l ; '¦' ROM:00007EEA mov.b r0l, @SSU_SSTDR:16 ROM:00007EEE ROM:00007EEE loc_7EEE: ; CODE XREF: lcdFillRectangle+9Cj ROM:00007EEE mov.b @SSU_SSSR:16, r0l ROM:00007EF2 bld #3, r0l ROM:00007EF4 bcc loc_7EEE:8 ROM:00007EF6 bset #1, @IO_PDR1:8 ROM:00007EFA mov.b r5h, r6l ROM:00007EFC jmp loc_7F8A:24 ROM:00007F00 ; --------------------------------------------------------------------------- ROM:00007F00 ROM:00007F00 loc_7F00: ; CODE XREF: lcdFillRectangle+138j ROM:00007F00 mov.b r4l, r0l ROM:00007F02 beq loc_7F12:8 ROM:00007F04 cmp.b #1, r0l ROM:00007F06 beq loc_7F30:8 ROM:00007F08 cmp.b #2, r0l ROM:00007F0A beq loc_7F4E:8 ROM:00007F0C cmp.b #3, r0l ROM:00007F0E bne loc_7F88:8 ROM:00007F10 bra loc_7F6C:8 ROM:00007F12 ; --------------------------------------------------------------------------- ROM:00007F12 ROM:00007F12 loc_7F12: ; CODE XREF: lcdFillRectangle+AAj ROM:00007F12 ; lcdFillRectangle+C0j ROM:00007F12 mov.b @SSU_SSSR:16, r0l ROM:00007F16 bld #2, r0l ROM:00007F18 bcc loc_7F12:8 ROM:00007F1A sub.b r0l, r0l ROM:00007F1C mov.b r0l, @SSU_SSTDR:16 ROM:00007F20 ROM:00007F20 loc_7F20: ; CODE XREF: lcdFillRectangle+CEj ROM:00007F20 mov.b @SSU_SSSR:16, r0l ROM:00007F24 bld #2, r0l ROM:00007F26 bcc loc_7F20:8 ROM:00007F28 sub.b r0l, r0l ROM:00007F2A mov.b r0l, @SSU_SSTDR:16 ROM:00007F2E bra loc_7F88:8 ROM:00007F30 ; --------------------------------------------------------------------------- ROM:00007F30 ROM:00007F30 loc_7F30: ; CODE XREF: lcdFillRectangle+AEj ROM:00007F30 ; lcdFillRectangle+DEj ROM:00007F30 mov.b @SSU_SSSR:16, r0l ROM:00007F34 bld #2, r0l ROM:00007F36 bcc loc_7F30:8 ROM:00007F38 sub.b r0l, r0l ROM:00007F3A mov.b r0l, @SSU_SSTDR:16 ROM:00007F3E ROM:00007F3E loc_7F3E: ; CODE XREF: lcdFillRectangle+ECj ROM:00007F3E mov.b @SSU_SSSR:16, r0l ROM:00007F42 bld #2, r0l ROM:00007F44 bcc loc_7F3E:8 ROM:00007F46 mov.b #0xFF, r0l ROM:00007F48 mov.b r0l, @SSU_SSTDR:16 ROM:00007F4C bra loc_7F88:8 ROM:00007F4E ; --------------------------------------------------------------------------- ROM:00007F4E ROM:00007F4E loc_7F4E: ; CODE XREF: lcdFillRectangle+B2j ROM:00007F4E ; lcdFillRectangle+FCj ROM:00007F4E mov.b @SSU_SSSR:16, r0l ROM:00007F52 bld #2, r0l ROM:00007F54 bcc loc_7F4E:8 ROM:00007F56 mov.b #0xFF, r0l ROM:00007F58 mov.b r0l, @SSU_SSTDR:16 ROM:00007F5C ROM:00007F5C loc_7F5C: ; CODE XREF: lcdFillRectangle+10Aj ROM:00007F5C mov.b @SSU_SSSR:16, r0l ROM:00007F60 bld #2, r0l ROM:00007F62 bcc loc_7F5C:8 ROM:00007F64 sub.b r0l, r0l ROM:00007F66 mov.b r0l, @SSU_SSTDR:16 ROM:00007F6A bra loc_7F88:8 ROM:00007F6C ; --------------------------------------------------------------------------- ROM:00007F6C ROM:00007F6C loc_7F6C: ; CODE XREF: lcdFillRectangle+B8j ROM:00007F6C ; lcdFillRectangle+11Aj ROM:00007F6C mov.b @SSU_SSSR:16, r0l ROM:00007F70 bld #2, r0l ROM:00007F72 bcc loc_7F6C:8 ROM:00007F74 mov.b #0xFF, r0l ROM:00007F76 mov.b r0l, @SSU_SSTDR:16 ROM:00007F7A ROM:00007F7A loc_7F7A: ; CODE XREF: lcdFillRectangle+128j ROM:00007F7A mov.b @SSU_SSSR:16, r0l ROM:00007F7E bld #2, r0l ROM:00007F80 bcc loc_7F7A:8 ROM:00007F82 mov.b #0xFF, r0l ROM:00007F84 mov.b r0l, @SSU_SSTDR:16 ROM:00007F88 ROM:00007F88 loc_7F88: ; CODE XREF: lcdFillRectangle+B6j ROM:00007F88 ; lcdFillRectangle+D6j ... ROM:00007F88 inc.b r6l ROM:00007F8A ROM:00007F8A loc_7F8A: ; CODE XREF: lcdFillRectangle+A4j ROM:00007F8A mov.b r6l, r0l ROM:00007F8C extu.w r0 ROM:00007F8E cmp.w e6, r0 ROM:00007F90 blt loc_7F00:16 ROM:00007F94 ROM:00007F94 loc_7F94: ; CODE XREF: lcdFillRectangle+142j ROM:00007F94 mov.b @SSU_SSSR:16, r0l ROM:00007F98 bld #3, r0l ROM:00007F9A bcc loc_7F94:8 ROM:00007F9C inc.b r6h ROM:00007F9E ROM:00007F9E loc_7F9E: ; CODE XREF: lcdFillRectangle+46j ROM:00007F9E mov.b r6h, r0l ROM:00007FA0 extu.w r0 ROM:00007FA2 cmp.w e5, r0 ROM:00007FA4 blt loc_7EA2:16 ROM:00007FA8 ROM:00007FA8 loc_7FA8: ; CODE XREF: lcdFillRectangle+156j ROM:00007FA8 mov.b @SSU_SSSR:16, r0l ROM:00007FAC bld #3, r0l ROM:00007FAE bcc loc_7FA8:8 ROM:00007FB0 bset #0, @IO_PDR1:8 ROM:00007FB4 jmp common_epilogue_4:24 ROM:00007FB4 ; End of function lcdFillRectangle ROM:00007FB4 ROM:00007FB8 ROM:00007FB8 ; =============== S U B R O U T I N E ======================================= ROM:00007FB8 ROM:00007FB8 ROM:00007FB8 lcdExitPowerSaveMode: ; CODE XREF: sub_A29C+38p ROM:00007FB8 mov.b #0x80, r0l ; 'Ç' ROM:00007FBA mov.b r0l, @SSU_SSER:16 ROM:00007FBE bclr #0, @IO_PDR1:8 ROM:00007FC2 bclr #1, @IO_PDR1:8 ROM:00007FC6 mov.b #0xE1, r0l ; 'ß' ROM:00007FC8 jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007FCC ROM:00007FCC loc_7FCC: ; CODE XREF: lcdExitPowerSaveMode+1Aj ROM:00007FCC mov.b @SSU_SSSR:16, r0l ROM:00007FD0 bld #3, r0l ROM:00007FD2 bcc loc_7FCC:8 ROM:00007FD4 bset #0, @IO_PDR1:8 ROM:00007FD8 rts ROM:00007FD8 ; End of function lcdExitPowerSaveMode ROM:00007FD8 ROM:00007FDA ROM:00007FDA ; =============== S U B R O U T I N E ======================================= ROM:00007FDA ROM:00007FDA ROM:00007FDA lcdEnterPowerSaveMode: ; CODE XREF: sleepModeEventLoop+C4p ROM:00007FDA mov.b #0x80, r0l ; 'Ç' ROM:00007FDC mov.b r0l, @SSU_SSER:16 ROM:00007FE0 bclr #0, @IO_PDR1:8 ROM:00007FE4 bclr #1, @IO_PDR1:8 ROM:00007FE8 mov.b #0xA9, r0l ; '¬' ROM:00007FEA jsr lcdSendSingleByteCommand:24 ; (r0l = cmd) ROM:00007FEE ROM:00007FEE loc_7FEE: ; CODE XREF: lcdEnterPowerSaveMode+1Aj ROM:00007FEE mov.b @SSU_SSSR:16, r0l ROM:00007FF2 bld #3, r0l ROM:00007FF4 bcc loc_7FEE:8 ROM:00007FF6 bset #0, @IO_PDR1:8 ROM:00007FFA rts ROM:00007FFA ; End of function lcdEnterPowerSaveMode ROM:00007FFA ROM:00007FFC ROM:00007FFC ; =============== S U B R O U T I N E ======================================= ROM:00007FFC ROM:00007FFC ROM:00007FFC someLcdRelatedThing: ; CODE XREF: goToConnectionMicroApp+16p ROM:00007FFC ; goToConnectionMicroApp+26p ... ROM:00007FFC push.w r6 ROM:00007FFE mov.b #0x80, r0h ; 'Ç' ROM:00008000 mov.b r0h, @SSU_SSER:16 ROM:00008004 bclr #0, @IO_PDR1:8 ROM:00008008 sub.b r1l, r1l ROM:0000800A extu.w r0 ROM:0000800C shar.w r0 ROM:0000800E shar.w r0 ROM:00008010 shar.w r0 ROM:00008012 mov.w r0, e0 ROM:00008014 bra loc_8092:8 ROM:00008016 ; --------------------------------------------------------------------------- ROM:00008016 ROM:00008016 loc_8016: ; CODE XREF: someLcdRelatedThing+9Cj ROM:00008016 mov.b r1l, r6l ROM:00008018 bclr #1, @IO_PDR1:8 ROM:0000801C ROM:0000801C loc_801C: ; CODE XREF: someLcdRelatedThing+26j ROM:0000801C mov.b @SSU_SSSR:16, r0l ROM:00008020 bld #2, r0l ROM:00008022 bcc loc_801C:8 ROM:00008024 mov.b #0x10, r0l ROM:00008026 mov.b r0l, @SSU_SSTDR:16 ROM:0000802A ROM:0000802A loc_802A: ; CODE XREF: someLcdRelatedThing+34j ROM:0000802A mov.b @SSU_SSSR:16, r0l ROM:0000802E bld #2, r0l ROM:00008030 bcc loc_802A:8 ROM:00008032 sub.b r0l, r0l ROM:00008034 mov.b r0l, @SSU_SSTDR:16 ROM:00008038 cmp.b #7, r6l ROM:0000803A bls loc_803E:8 ROM:0000803C sleep ROM:0000803E ROM:0000803E loc_803E: ; CODE XREF: someLcdRelatedThing+3Ej ROM:0000803E ; someLcdRelatedThing+48j ROM:0000803E mov.b @SSU_SSSR:16, r0l ROM:00008042 bld #2, r0l ROM:00008044 bcc loc_803E:8 ROM:00008046 mov.b @byte_FFF7E4:16, r0l ROM:0000804A mov.b #8, r0h ROM:0000804C mulxu.b r0h, r0 ROM:0000804E add.b r6l, r0l ROM:00008050 add.b #0xB0, r0l ; '¦' ROM:00008052 mov.b r0l, @SSU_SSTDR:16 ROM:00008056 ROM:00008056 loc_8056: ; CODE XREF: someLcdRelatedThing+60j ROM:00008056 mov.b @SSU_SSSR:16, r0l ROM:0000805A bld #3, r0l ROM:0000805C bcc loc_8056:8 ROM:0000805E bset #1, @IO_PDR1:8 ROM:00008062 mov.b #0x60, r6l ; '`' ROM:00008064 bra loc_8084:8 ROM:00008066 ; --------------------------------------------------------------------------- ROM:00008066 ROM:00008066 loc_8066: ; CODE XREF: someLcdRelatedThing+70j ROM:00008066 ; someLcdRelatedThing+8Aj ROM:00008066 mov.b @SSU_SSSR:16, r0l ROM:0000806A bld #2, r0l ROM:0000806C bcc loc_8066:8 ROM:0000806E sub.b r0l, r0l ROM:00008070 mov.b r0l, @SSU_SSTDR:16 ROM:00008074 ROM:00008074 loc_8074: ; CODE XREF: someLcdRelatedThing+7Ej ROM:00008074 mov.b @SSU_SSSR:16, r0l ROM:00008078 bld #2, r0l ROM:0000807A bcc loc_8074:8 ROM:0000807C sub.b r0l, r0l ROM:0000807E mov.b r0l, @SSU_SSTDR:16 ROM:00008082 dec.b r6l ROM:00008084 ROM:00008084 loc_8084: ; CODE XREF: someLcdRelatedThing+68j ROM:00008084 mov.b r6l, r6l ROM:00008086 bne loc_8066:8 ROM:00008088 ROM:00008088 loc_8088: ; CODE XREF: someLcdRelatedThing+92j ROM:00008088 mov.b @SSU_SSSR:16, r0l ROM:0000808C bld #3, r0l ROM:0000808E bcc loc_8088:8 ROM:00008090 inc.b r1l ROM:00008092 ROM:00008092 loc_8092: ; CODE XREF: someLcdRelatedThing+18j ROM:00008092 mov.b r1l, r0l ROM:00008094 extu.w r0 ROM:00008096 cmp.w e0, r0 ROM:00008098 blt loc_8016:16 ROM:0000809C ROM:0000809C loc_809C: ; CODE XREF: someLcdRelatedThing+A6j ROM:0000809C mov.b @SSU_SSSR:16, r0l ROM:000080A0 bld #3, r0l ROM:000080A2 bcc loc_809C:8 ROM:000080A4 bset #0, @IO_PDR1:8 ROM:000080A8 pop.w r6 ROM:000080AA rts ROM:000080AA ; End of function someLcdRelatedThing ROM:000080AA ROM:000080AC ROM:000080AC ; =============== S U B R O U T I N E ======================================= ROM:000080AC ROM:000080AC ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000080AC ROM:000080AC drawImageToScreen: ; CODE XREF: drawCurPokemonSmallAnimatedFrame+36p ROM:000080AC ; drawCurPokemonSmallAnimatedFrameHorizFlipped+40p ... ROM:000080AC ROM:000080AC imgWidth = -2 ROM:000080AC img_y_low_3_bits= -1 ROM:000080AC ROM:000080AC imgDataPtr = r6 ROM:000080AC img_y = e6 ROM:000080AC first_unaffected_lcd_stripe = e2 ROM:000080AC cur_lcd_stripe_being_worked_on = e0 ROM:000080AC curColIdx = e4 ROM:000080AC jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:000080B0 sub.w #0xA, r7 ROM:000080B4 mov.b r0l, @sp ROM:000080B6 mov.b r0h, r6l ROM:000080B8 mov.b r1l, @(0xA+imgWidth:16,sp) ROM:000080BC mov.b r6l, r2l ROM:000080BE and.b #7, r2l ROM:000080C0 mov.b r2l, @(0xA+img_y_low_3_bits:16,sp) ROM:000080C4 mov.w #8, curColIdx ROM:000080C8 mov.b r6l, r2l ROM:000080CA exts.w r2 ROM:000080CC mov.w r2, img_y ROM:000080CE exts.l er2 ROM:000080D0 divxs.w curColIdx, er2 ; img_y_lsr_3 ROM:000080D4 mov.b r1h, r1l ROM:000080D6 extu.w r1 ROM:000080D8 add.w img_y, r1 ; first row unaffected by drawing ROM:000080DA add.w #7, r1 ROM:000080DE exts.l er1 ROM:000080E0 divxs.w curColIdx, er1 ; first LCD horizontal stripe unaffected by drawing ROM:000080E4 mov.w cur_lcd_stripe_being_worked_on, imgDataPtr ROM:000080E6 mov.b #0x80, r1h ; 'Ç' ; tx only on ROM:000080E8 mov.b r1h, @SSU_SSER:16 ROM:000080EC bclr #0, @IO_PDR1:8 ; LCD selected ROM:000080F0 extu.w r2 ROM:000080F2 mov.w r2, e5 ROM:000080F4 mov.w r2, cur_lcd_stripe_being_worked_on ROM:000080F6 extu.w r1 ROM:000080F8 mov.w r1, first_unaffected_lcd_stripe ROM:000080FA dec.w #1, r1 ROM:000080FC mov.w r1, e3 ROM:000080FE mov.b @(0xA+imgWidth:16,sp), r1l ROM:00008102 extu.w r1 ROM:00008104 shll.w r1 ROM:00008106 mov.w r1, r4 ROM:00008108 mov.b @(0xA+img_y_low_3_bits:16,sp), r2l ROM:0000810C extu.w r2 ROM:0000810E mov.w r2, img_y ROM:00008110 sub.w r2, curColIdx ROM:00008112 mov.w curColIdx, e1 ROM:00008114 jmp per_stripe_loop_check:24 ROM:00008118 ; --------------------------------------------------------------------------- ROM:00008118 ROM:00008118 work_on_next_stripe: ; CODE XREF: drawImageToScreen+226j ROM:00008118 mov.w cur_lcd_stripe_being_worked_on, r0 ROM:0000811A mov.b r0l, r5h ROM:0000811C mov.b @sp, r5l ; x coordinate to start drawing at ROM:0000811E bclr #1, @IO_PDR1:8 ; lcd selected ROM:00008122 ROM:00008122 wait_tx_space: ; CODE XREF: drawImageToScreen+7Cj ROM:00008122 mov.b @SSU_SSSR:16, r0l ROM:00008126 bld #2, r0l ROM:00008128 bcc wait_tx_space:8 ROM:0000812A mov.b r5l, r0l ROM:0000812C mov.b #0x10, r1l ROM:0000812E sub.b r0h, r0h ROM:00008130 divxu.b r1l, r0 ROM:00008132 and.b #7, r0l ROM:00008134 add.b #0x10, r0l ; 0x10 | ((x >> 4) & 7) ROM:00008136 mov.b r0l, @SSU_SSTDR:16 ROM:0000813A ROM:0000813A wait_tx_space_2: ; CODE XREF: drawImageToScreen+94j ROM:0000813A mov.b @SSU_SSSR:16, r0l ROM:0000813E bld #2, r0l ROM:00008140 bcc wait_tx_space_2:8 ROM:00008142 and.b #0xF, r5l ; x & 0x0f ROM:00008144 mov.b r5l, @SSU_SSTDR:16 ROM:00008148 cmp.b #7, r5h ROM:0000814A bls wait_tx_space_3:8 ROM:0000814C sleep ROM:0000814E ROM:0000814E wait_tx_space_3: ; CODE XREF: drawImageToScreen+9Ej ROM:0000814E ; drawImageToScreen+A8j ROM:0000814E mov.b @SSU_SSSR:16, r0l ROM:00008152 bld #2, r0l ROM:00008154 bcc wait_tx_space_3:8 ROM:00008156 mov.b @byte_FFF7E4:16, r0l ROM:0000815A mov.b #8, r0h ROM:0000815C mulxu.b r0h, r0 ; * 8 ROM:0000815E add.b r5h, r0l ; + curStripe ROM:00008160 add.b #0xB0, r0l ; '¦' ; set page address command 0xB0 ROM:00008162 mov.b r0l, @SSU_SSTDR:16 ROM:00008166 ROM:00008166 wait_tx_done: ; CODE XREF: drawImageToScreen+C0j ROM:00008166 mov.b @SSU_SSSR:16, r0l ROM:0000816A bld #3, r0l ROM:0000816C bcc wait_tx_done:8 ROM:0000816E bset #1, @IO_PDR1:8 ; deselect ROM:00008172 sub.w curColIdx, curColIdx ROM:00008174 jmp perColLoopCheck:24 ROM:00008178 ; --------------------------------------------------------------------------- ROM:00008178 ROM:00008178 moreColsToWorkOn: ; CODE XREF: drawImageToScreen+214j ROM:00008178 mov.w imgDataPtr, r3 ROM:0000817A inc.w #1, r3 ROM:0000817C mov.b @(0xA+img_y_low_3_bits:16,sp), r0l ROM:00008180 bne image_perfectly_verticlaly_aligned_to_stripe:8 ROM:00008182 ROM:00008182 image_crosses_stripe: ROM:00008182 mov.b @er6, r0l ROM:00008184 extu.w r0 ROM:00008186 mov.w img_y, r1 ROM:00008188 ROM:00008188 loc_8188: ; CODE XREF: drawImageToScreen+E2j ROM:00008188 dec.b r1l ROM:0000818A bmi loc_8190:8 ROM:0000818C shll.w r0 ROM:0000818E bra loc_8188:8 ROM:00008190 ; --------------------------------------------------------------------------- ROM:00008190 ROM:00008190 loc_8190: ; CODE XREF: drawImageToScreen+DEj ROM:00008190 mov.w r0, r5 ROM:00008192 ROM:00008192 loc_8192: ; CODE XREF: drawImageToScreen+ECj ROM:00008192 mov.b @SSU_SSSR:16, r0l ROM:00008196 bld #2, r0l ROM:00008198 bcc loc_8192:8 ROM:0000819A mov.b r5l, @SSU_SSTDR:16 ROM:0000819E mov.b @er3, r0l ROM:000081A0 extu.w r0 ROM:000081A2 mov.w img_y, r1 ROM:000081A4 ROM:000081A4 loc_81A4: ; CODE XREF: drawImageToScreen+FEj ROM:000081A4 dec.b r1l ROM:000081A6 bmi loc_81AC:8 ROM:000081A8 shll.w r0 ROM:000081AA bra loc_81A4:8 ROM:000081AC ; --------------------------------------------------------------------------- ROM:000081AC ROM:000081AC loc_81AC: ; CODE XREF: drawImageToScreen+FAj ROM:000081AC mov.w r0, r5 ROM:000081AE ROM:000081AE loc_81AE: ; CODE XREF: drawImageToScreen+108j ROM:000081AE mov.b @SSU_SSSR:16, r0l ROM:000081B2 bld #2, r0l ROM:000081B4 bcc loc_81AE:8 ROM:000081B6 mov.b r5l, @SSU_SSTDR:16 ROM:000081BA jmp loc_82B4:24 ROM:000081BE ; --------------------------------------------------------------------------- ROM:000081BE ROM:000081BE image_perfectly_verticlaly_aligned_to_stripe: ROM:000081BE ; CODE XREF: drawImageToScreen+D4j ROM:000081BE mov.w e3, r0 ROM:000081C0 cmp.w r0, cur_lcd_stripe_being_worked_on ROM:000081C2 bne loc_820A:8 ROM:000081C4 mov.w imgDataPtr, r5 ROM:000081C6 sub.w r4, r5 ROM:000081C8 mov.b @er5, r0l ROM:000081CA extu.w r0 ROM:000081CC mov.w e1, r1 ROM:000081CE ROM:000081CE loc_81CE: ; CODE XREF: drawImageToScreen+128j ROM:000081CE dec.b r1l ROM:000081D0 bmi loc_81D6:8 ROM:000081D2 shar.w r0 ROM:000081D4 bra loc_81CE:8 ROM:000081D6 ; --------------------------------------------------------------------------- ROM:000081D6 ROM:000081D6 loc_81D6: ; CODE XREF: drawImageToScreen+124j ROM:000081D6 mov.w r0, r5 ROM:000081D8 ROM:000081D8 loc_81D8: ; CODE XREF: drawImageToScreen+132j ROM:000081D8 mov.b @SSU_SSSR:16, r0l ROM:000081DC bld #2, r0l ROM:000081DE bcc loc_81D8:8 ROM:000081E0 mov.b r5l, @SSU_SSTDR:16 ROM:000081E4 mov.w imgDataPtr, r5 ROM:000081E6 sub.w r4, r5 ROM:000081E8 mov.b @(1:16,er5), r0l ROM:000081EC extu.w r0 ROM:000081EE mov.w e1, r1 ROM:000081F0 ROM:000081F0 loc_81F0: ; CODE XREF: drawImageToScreen+14Aj ROM:000081F0 dec.b r1l ROM:000081F2 bmi loc_81F8:8 ROM:000081F4 shar.w r0 ROM:000081F6 bra loc_81F0:8 ROM:000081F8 ; --------------------------------------------------------------------------- ROM:000081F8 ROM:000081F8 loc_81F8: ; CODE XREF: drawImageToScreen+146j ROM:000081F8 mov.w r0, r5 ROM:000081FA ROM:000081FA loc_81FA: ; CODE XREF: drawImageToScreen+154j ROM:000081FA mov.b @SSU_SSSR:16, r0l ROM:000081FE bld #2, r0l ROM:00008200 bcc loc_81FA:8 ROM:00008202 mov.b r5l, @SSU_SSTDR:16 ROM:00008206 jmp loc_82B4:24 ROM:0000820A ; --------------------------------------------------------------------------- ROM:0000820A ROM:0000820A loc_820A: ; CODE XREF: drawImageToScreen+116j ROM:0000820A mov.w e5, r0 ROM:0000820C cmp.w r0, cur_lcd_stripe_being_worked_on ROM:0000820E beq loc_827C:8 ROM:00008210 mov.w #8, r0 ROM:00008214 sub.w img_y, r0 ROM:00008216 mov.w imgDataPtr, r5 ROM:00008218 sub.w r4, r5 ROM:0000821A mov.b @er5, r1l ROM:0000821C extu.w r1 ROM:0000821E ROM:0000821E loc_821E: ; CODE XREF: drawImageToScreen+178j ROM:0000821E dec.b r0l ROM:00008220 bmi loc_8226:8 ROM:00008222 shar.w r1 ROM:00008224 bra loc_821E:8 ROM:00008226 ; --------------------------------------------------------------------------- ROM:00008226 ROM:00008226 loc_8226: ; CODE XREF: drawImageToScreen+174j ROM:00008226 mov.b @er6, r0l ROM:00008228 extu.w r0 ROM:0000822A mov.w img_y, r2 ROM:0000822C ROM:0000822C loc_822C: ; CODE XREF: drawImageToScreen+186j ROM:0000822C dec.b r2l ROM:0000822E bmi loc_8234:8 ROM:00008230 shll.w r0 ROM:00008232 bra loc_822C:8 ROM:00008234 ; --------------------------------------------------------------------------- ROM:00008234 ROM:00008234 loc_8234: ; CODE XREF: drawImageToScreen+182j ROM:00008234 or.w r0, r1 ROM:00008236 mov.w r1, r5 ROM:00008238 ROM:00008238 loc_8238: ; CODE XREF: drawImageToScreen+192j ROM:00008238 mov.b @SSU_SSSR:16, r0l ROM:0000823C bld #2, r0l ROM:0000823E bcc loc_8238:8 ROM:00008240 mov.b r5l, @SSU_SSTDR:16 ROM:00008244 mov.w #8, r0 ROM:00008248 sub.w img_y, r0 ROM:0000824A mov.w imgDataPtr, r5 ROM:0000824C sub.w r4, r5 ROM:0000824E mov.b @(1:16,er5), r1l ROM:00008252 extu.w r1 ROM:00008254 ROM:00008254 loc_8254: ; CODE XREF: drawImageToScreen+1AEj ROM:00008254 dec.b r0l ROM:00008256 bmi loc_825C:8 ROM:00008258 shar.w r1 ROM:0000825A bra loc_8254:8 ROM:0000825C ; --------------------------------------------------------------------------- ROM:0000825C ROM:0000825C loc_825C: ; CODE XREF: drawImageToScreen+1AAj ROM:0000825C mov.b @er3, r0l ROM:0000825E extu.w r0 ROM:00008260 mov.w img_y, r2 ROM:00008262 ROM:00008262 loc_8262: ; CODE XREF: drawImageToScreen+1BCj ROM:00008262 dec.b r2l ROM:00008264 bmi loc_826A:8 ROM:00008266 shll.w r0 ROM:00008268 bra loc_8262:8 ROM:0000826A ; --------------------------------------------------------------------------- ROM:0000826A ROM:0000826A loc_826A: ; CODE XREF: drawImageToScreen+1B8j ROM:0000826A or.w r0, r1 ROM:0000826C mov.w r1, r5 ROM:0000826E ROM:0000826E loc_826E: ; CODE XREF: drawImageToScreen+1C8j ROM:0000826E mov.b @SSU_SSSR:16, r0l ROM:00008272 bld #2, r0l ROM:00008274 bcc loc_826E:8 ROM:00008276 mov.b r5l, @SSU_SSTDR:16 ROM:0000827A bra loc_82B4:8 ROM:0000827C ; --------------------------------------------------------------------------- ROM:0000827C ROM:0000827C loc_827C: ; CODE XREF: drawImageToScreen+162j ROM:0000827C mov.b @er6, r0l ROM:0000827E extu.w r0 ROM:00008280 mov.w img_y, r1 ROM:00008282 ROM:00008282 loc_8282: ; CODE XREF: drawImageToScreen+1DCj ROM:00008282 dec.b r1l ROM:00008284 bmi loc_828A:8 ROM:00008286 shll.w r0 ROM:00008288 bra loc_8282:8 ROM:0000828A ; --------------------------------------------------------------------------- ROM:0000828A ROM:0000828A loc_828A: ; CODE XREF: drawImageToScreen+1D8j ROM:0000828A mov.w r0, r5 ROM:0000828C ROM:0000828C loc_828C: ; CODE XREF: drawImageToScreen+1E6j ROM:0000828C mov.b @SSU_SSSR:16, r0l ROM:00008290 bld #2, r0l ROM:00008292 bcc loc_828C:8 ROM:00008294 mov.b r5l, @SSU_SSTDR:16 ROM:00008298 mov.b @er3, r0l ROM:0000829A extu.w r0 ROM:0000829C mov.w img_y, r1 ROM:0000829E ROM:0000829E loc_829E: ; CODE XREF: drawImageToScreen+1F8j ROM:0000829E dec.b r1l ROM:000082A0 bmi loc_82A6:8 ROM:000082A2 shll.w r0 ROM:000082A4 bra loc_829E:8 ROM:000082A6 ; --------------------------------------------------------------------------- ROM:000082A6 ROM:000082A6 loc_82A6: ; CODE XREF: drawImageToScreen+1F4j ROM:000082A6 mov.w r0, r5 ROM:000082A8 ROM:000082A8 loc_82A8: ; CODE XREF: drawImageToScreen+202j ROM:000082A8 mov.b @SSU_SSSR:16, r0l ROM:000082AC bld #2, r0l ROM:000082AE bcc loc_82A8:8 ROM:000082B0 mov.b r5l, @SSU_SSTDR:16 ROM:000082B4 ROM:000082B4 loc_82B4: ; CODE XREF: drawImageToScreen+10Ej ROM:000082B4 ; drawImageToScreen+15Aj ... ROM:000082B4 inc.w #1, curColIdx ROM:000082B6 inc.w #2, imgDataPtr ROM:000082B8 ROM:000082B8 perColLoopCheck: ; CODE XREF: drawImageToScreen+C8j ROM:000082B8 mov.b @(0xA+imgWidth:16,sp), r0l ROM:000082BC extu.w r0 ROM:000082BE cmp.w r0, curColIdx ROM:000082C0 blt moreColsToWorkOn:16 ROM:000082C4 ROM:000082C4 loc_82C4: ; CODE XREF: drawImageToScreen+21Ej ROM:000082C4 mov.b @SSU_SSSR:16, r0l ROM:000082C8 bld #3, r0l ROM:000082CA bcc loc_82C4:8 ROM:000082CC inc.w #1, cur_lcd_stripe_being_worked_on ROM:000082CE ROM:000082CE per_stripe_loop_check: ; CODE XREF: drawImageToScreen+68j ROM:000082CE mov.w first_unaffected_lcd_stripe, r0 ROM:000082D0 cmp.w r0, cur_lcd_stripe_being_worked_on ROM:000082D2 blt work_on_next_stripe:16 ROM:000082D6 ROM:000082D6 wait_tx_over: ; CODE XREF: drawImageToScreen+230j ROM:000082D6 mov.b @SSU_SSSR:16, r0l ROM:000082DA bld #3, r0l ROM:000082DC bcc wait_tx_over:8 ROM:000082DE bset #0, @IO_PDR1:8 ; deselect LCD ROM:000082E2 add.w #0xA, r7 ROM:000082E6 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:000082E6 ; End of function drawImageToScreen ROM:000082E6 ROM:000082EA ROM:000082EA ; =============== S U B R O U T I N E ======================================= ROM:000082EA ROM:000082EA ; (r0l = x, r0h = y, e0 = imgWidth, r1 = imgHeight, e1 = imgData) ROM:000082EA ROM:000082EA drawImageInSomeWeirdWay: ; CODE XREF: drawPeerPlayPokemonAnimationFrame+48p ROM:000082EA ; battleScreenDraw+15Ap ROM:000082EA ROM:000082EA var_A = -0xA ROM:000082EA var_4 = -4 ROM:000082EA var_2 = -2 ROM:000082EA var_1 = -1 ROM:000082EA ROM:000082EA push.w r3 ROM:000082EC push.w r4 ROM:000082EE push.l er5 ROM:000082F2 push.l er6 ROM:000082F6 sub.w #0xC, r7 ROM:000082FA mov.b r0l, @(0xC+var_2:16,sp) ROM:000082FE mov.b r0h, r6l ROM:00008300 mov.w e0, e4 ROM:00008302 mov.b r6l, r2l ROM:00008304 and.b #7, r2l ROM:00008306 mov.b r2l, @(0xC+var_1:16,sp) ROM:0000830A mov.b r6l, r2l ROM:0000830C exts.w r2 ROM:0000830E exts.l er2 ROM:00008310 mov.w #8, e3 ROM:00008314 divxs.w e3, er2 ROM:00008318 mov.w r2, e3 ROM:0000831A mov.b r6l, r2l ROM:0000831C exts.w r2 ROM:0000831E add.w r1, r2 ROM:00008320 add.w #7, r2 ROM:00008324 shlr.w r2 ROM:00008326 shlr.w r2 ROM:00008328 shlr.w r2 ROM:0000832A mov.w r2, e5 ROM:0000832C mov.w e1, r6 ROM:0000832E mov.b #0x80, r1l ; 'Ç' ROM:00008330 mov.b r1l, @SSU_SSER:16 ROM:00008334 bclr #0, @IO_PDR1:8 ROM:00008338 mov.w e3, e1 ROM:0000833A mov.b @(0xC+var_2:16,sp), r1l ROM:0000833E exts.w r1 ROM:00008340 mov.w r1, @sp ROM:00008342 add.w e4, r1 ROM:00008344 mov.w r1, @(0xC+var_A:16,sp) ROM:00008348 dec.w #1, r2 ROM:0000834A mov.w r2, e2 ROM:0000834C shll.w e4 ROM:0000834E mov.w e4, r4 ROM:00008350 mov.b @(0xC+var_1:16,sp), r1l ROM:00008354 extu.w r1 ROM:00008356 mov.w r1, e6 ROM:00008358 mov.w #8, e0 ROM:0000835C sub.w r1, e0 ROM:0000835E mov.w e0, @(0xC+var_4:16,sp) ROM:00008362 jmp loc_856E:24 ROM:00008366 ; --------------------------------------------------------------------------- ROM:00008366 ROM:00008366 loc_8366: ; CODE XREF: drawImageInSomeWeirdWay+288j ROM:00008366 cmp.w #8, e1 ROM:0000836A bge loc_8576:16 ROM:0000836E mov.w e1, e1 ROM:00008370 bge loc_8378:8 ROM:00008372 add.w r4, r6 ROM:00008374 jmp loc_856C:24 ROM:00008378 ; --------------------------------------------------------------------------- ROM:00008378 ROM:00008378 loc_8378: ; CODE XREF: drawImageInSomeWeirdWay+86j ROM:00008378 mov.b @(0xC+var_2:16,sp), r0l ROM:0000837C bge loc_83CA:8 ROM:0000837E mov.w e1, r0 ROM:00008380 mov.b r0l, r5l ROM:00008382 bclr #1, @IO_PDR1:8 ROM:00008386 ROM:00008386 loc_8386: ; CODE XREF: drawImageInSomeWeirdWay+A2j ROM:00008386 mov.b @SSU_SSSR:16, r0l ROM:0000838A bld #2, r0l ROM:0000838C bcc loc_8386:8 ROM:0000838E mov.b #0x10, r0l ROM:00008390 mov.b r0l, @SSU_SSTDR:16 ROM:00008394 ROM:00008394 loc_8394: ; CODE XREF: drawImageInSomeWeirdWay+B0j ROM:00008394 mov.b @SSU_SSSR:16, r0l ROM:00008398 bld #2, r0l ROM:0000839A bcc loc_8394:8 ROM:0000839C sub.b r0l, r0l ROM:0000839E mov.b r0l, @SSU_SSTDR:16 ROM:000083A2 cmp.b #7, r5l ROM:000083A4 bls loc_83A8:8 ROM:000083A6 sleep ROM:000083A8 ROM:000083A8 loc_83A8: ; CODE XREF: drawImageInSomeWeirdWay+BAj ROM:000083A8 ; drawImageInSomeWeirdWay+C4j ROM:000083A8 mov.b @SSU_SSSR:16, r0l ROM:000083AC bld #2, r0l ROM:000083AE bcc loc_83A8:8 ROM:000083B0 mov.b @byte_FFF7E4:16, r0l ROM:000083B4 mov.b #8, r0h ROM:000083B6 mulxu.b r0h, r0 ROM:000083B8 add.b r5l, r0l ROM:000083BA add.b #0xB0, r0l ; '¦' ROM:000083BC mov.b r0l, @SSU_SSTDR:16 ROM:000083C0 ROM:000083C0 loc_83C0: ; CODE XREF: drawImageInSomeWeirdWay+DEj ROM:000083C0 mov.b @SSU_SSSR:16, r0l ROM:000083C4 bld #3, r0l ROM:000083C6 bcs loc_8422:8 ROM:000083C8 bra loc_83C0:8 ROM:000083CA ; --------------------------------------------------------------------------- ROM:000083CA ROM:000083CA loc_83CA: ; CODE XREF: drawImageInSomeWeirdWay+92j ROM:000083CA mov.w e1, r0 ROM:000083CC mov.b r0l, r5l ROM:000083CE mov.b @(0xC+var_2:16,sp), r5h ROM:000083D2 bclr #1, @IO_PDR1:8 ROM:000083D6 ROM:000083D6 loc_83D6: ; CODE XREF: drawImageInSomeWeirdWay+F2j ROM:000083D6 mov.b @SSU_SSSR:16, r0l ROM:000083DA bld #2, r0l ROM:000083DC bcc loc_83D6:8 ROM:000083DE mov.b r5h, r0l ROM:000083E0 mov.b #0x10, r1l ROM:000083E2 sub.b r0h, r0h ROM:000083E4 divxu.b r1l, r0 ROM:000083E6 and.b #7, r0l ROM:000083E8 add.b #0x10, r0l ROM:000083EA mov.b r0l, @SSU_SSTDR:16 ROM:000083EE ROM:000083EE loc_83EE: ; CODE XREF: drawImageInSomeWeirdWay+10Aj ROM:000083EE mov.b @SSU_SSSR:16, r0l ROM:000083F2 bld #2, r0l ROM:000083F4 bcc loc_83EE:8 ROM:000083F6 and.b #0xF, r5h ROM:000083F8 mov.b r5h, @SSU_SSTDR:16 ROM:000083FC cmp.b #7, r5l ROM:000083FE bls loc_8402:8 ROM:00008400 sleep ROM:00008402 ROM:00008402 loc_8402: ; CODE XREF: drawImageInSomeWeirdWay+114j ROM:00008402 ; drawImageInSomeWeirdWay+11Ej ROM:00008402 mov.b @SSU_SSSR:16, r0l ROM:00008406 bld #2, r0l ROM:00008408 bcc loc_8402:8 ROM:0000840A mov.b @byte_FFF7E4:16, r0l ROM:0000840E mov.b #8, r0h ROM:00008410 mulxu.b r0h, r0 ROM:00008412 add.b r5l, r0l ROM:00008414 add.b #0xB0, r0l ; '¦' ROM:00008416 mov.b r0l, @SSU_SSTDR:16 ROM:0000841A ROM:0000841A loc_841A: ; CODE XREF: drawImageInSomeWeirdWay+136j ROM:0000841A mov.b @SSU_SSSR:16, r0l ROM:0000841E bld #3, r0l ROM:00008420 bcc loc_841A:8 ROM:00008422 ROM:00008422 loc_8422: ; CODE XREF: drawImageInSomeWeirdWay+DCj ROM:00008422 bset #1, @IO_PDR1:8 ROM:00008426 mov.w @sp, e4 ROM:00008428 jmp loc_855A:24 ROM:0000842C ; --------------------------------------------------------------------------- ROM:0000842C ROM:0000842C loc_842C: ; CODE XREF: drawImageInSomeWeirdWay+276j ROM:0000842C mov.w e4, e4 ROM:0000842E blt loc_8556:16 ROM:00008432 mov.w r6, r3 ROM:00008434 inc.w #1, r3 ROM:00008436 mov.b @(0xC+var_1:16,sp), r0l ROM:0000843A bne loc_8472:8 ROM:0000843C mov.b @er6, r5l ROM:0000843E mov.w e6, r0 ROM:00008440 ROM:00008440 loc_8440: ; CODE XREF: drawImageInSomeWeirdWay+15Cj ROM:00008440 dec.b r0l ROM:00008442 bmi loc_8448:8 ROM:00008444 shll.b r5l ROM:00008446 bra loc_8440:8 ROM:00008448 ; --------------------------------------------------------------------------- ROM:00008448 ROM:00008448 loc_8448: ; CODE XREF: drawImageInSomeWeirdWay+158j ROM:00008448 ; drawImageInSomeWeirdWay+164j ROM:00008448 mov.b @SSU_SSSR:16, r0l ROM:0000844C bld #2, r0l ROM:0000844E bcc loc_8448:8 ROM:00008450 mov.b r5l, @SSU_SSTDR:16 ROM:00008454 mov.b @er3, r3l ROM:00008456 mov.w e6, r0 ROM:00008458 ROM:00008458 loc_8458: ; CODE XREF: drawImageInSomeWeirdWay+174j ROM:00008458 dec.b r0l ROM:0000845A bmi loc_8460:8 ROM:0000845C shll.b r3l ROM:0000845E bra loc_8458:8 ROM:00008460 ; --------------------------------------------------------------------------- ROM:00008460 ROM:00008460 loc_8460: ; CODE XREF: drawImageInSomeWeirdWay+170j ROM:00008460 mov.b r3l, r5l ROM:00008462 ROM:00008462 loc_8462: ; CODE XREF: drawImageInSomeWeirdWay+17Ej ROM:00008462 mov.b @SSU_SSSR:16, r0l ROM:00008466 bld #2, r0l ROM:00008468 bcc loc_8462:8 ROM:0000846A mov.b r5l, @SSU_SSTDR:16 ROM:0000846E jmp loc_8556:24 ROM:00008472 ; --------------------------------------------------------------------------- ROM:00008472 ROM:00008472 loc_8472: ; CODE XREF: drawImageInSomeWeirdWay+150j ROM:00008472 mov.w e2, r0 ROM:00008474 cmp.w r0, e1 ROM:00008476 bne loc_84BE:8 ROM:00008478 mov.w r6, r0 ROM:0000847A sub.w r4, r0 ROM:0000847C mov.b @er0, r0l ROM:0000847E mov.b @(0xC+var_4+1:16,sp), r0h ROM:00008482 ROM:00008482 loc_8482: ; CODE XREF: drawImageInSomeWeirdWay+19Ej ROM:00008482 dec.b r0h ROM:00008484 bmi loc_848A:8 ROM:00008486 shlr.b r0l ROM:00008488 bra loc_8482:8 ROM:0000848A ; --------------------------------------------------------------------------- ROM:0000848A ROM:0000848A loc_848A: ; CODE XREF: drawImageInSomeWeirdWay+19Aj ROM:0000848A mov.b r0l, r5l ROM:0000848C ROM:0000848C loc_848C: ; CODE XREF: drawImageInSomeWeirdWay+1A8j ROM:0000848C mov.b @SSU_SSSR:16, r0l ROM:00008490 bld #2, r0l ROM:00008492 bcc loc_848C:8 ROM:00008494 mov.b r5l, @SSU_SSTDR:16 ROM:00008498 mov.w r6, r0 ROM:0000849A sub.w r4, r0 ROM:0000849C mov.b @(1:16,er0), r0l ROM:000084A0 mov.b @(0xC+var_4+1:16,sp), r0h ROM:000084A4 ROM:000084A4 loc_84A4: ; CODE XREF: drawImageInSomeWeirdWay+1C0j ROM:000084A4 dec.b r0h ROM:000084A6 bmi loc_84AC:8 ROM:000084A8 shlr.b r0l ROM:000084AA bra loc_84A4:8 ROM:000084AC ; --------------------------------------------------------------------------- ROM:000084AC ROM:000084AC loc_84AC: ; CODE XREF: drawImageInSomeWeirdWay+1BCj ROM:000084AC mov.b r0l, r5l ROM:000084AE ROM:000084AE loc_84AE: ; CODE XREF: drawImageInSomeWeirdWay+1CAj ROM:000084AE mov.b @SSU_SSSR:16, r0l ROM:000084B2 bld #2, r0l ROM:000084B4 bcc loc_84AE:8 ROM:000084B6 mov.b r5l, @SSU_SSTDR:16 ROM:000084BA jmp loc_8556:24 ROM:000084BE ; --------------------------------------------------------------------------- ROM:000084BE ROM:000084BE loc_84BE: ; CODE XREF: drawImageInSomeWeirdWay+18Cj ROM:000084BE cmp.w e3, e1 ROM:000084C0 beq loc_8524:8 ROM:000084C2 mov.w r6, r0 ROM:000084C4 sub.w r4, r0 ROM:000084C6 mov.w #8, e0 ROM:000084CA sub.w e6, e0 ROM:000084CC mov.b @(1:16,er0), r0l ROM:000084D0 ROM:000084D0 loc_84D0: ; CODE XREF: drawImageInSomeWeirdWay+1ECj ROM:000084D0 dec.w #1, e0 ROM:000084D2 bmi loc_84D8:8 ROM:000084D4 shlr.b r0l ROM:000084D6 bra loc_84D0:8 ROM:000084D8 ; --------------------------------------------------------------------------- ROM:000084D8 ROM:000084D8 loc_84D8: ; CODE XREF: drawImageInSomeWeirdWay+1E8j ROM:000084D8 mov.b @er6, r5l ROM:000084DA mov.w e6, r1 ROM:000084DC ROM:000084DC loc_84DC: ; CODE XREF: drawImageInSomeWeirdWay+1F8j ROM:000084DC dec.b r1l ROM:000084DE bmi loc_84E4:8 ROM:000084E0 shll.b r5l ROM:000084E2 bra loc_84DC:8 ROM:000084E4 ; --------------------------------------------------------------------------- ROM:000084E4 ROM:000084E4 loc_84E4: ; CODE XREF: drawImageInSomeWeirdWay+1F4j ROM:000084E4 or.b r0l, r5l ROM:000084E6 ROM:000084E6 loc_84E6: ; CODE XREF: drawImageInSomeWeirdWay+202j ROM:000084E6 mov.b @SSU_SSSR:16, r0l ROM:000084EA bld #2, r0l ROM:000084EC bcc loc_84E6:8 ROM:000084EE mov.b r5l, @SSU_SSTDR:16 ROM:000084F2 mov.w r6, r0 ROM:000084F4 sub.w r4, r0 ROM:000084F6 mov.w #8, e0 ROM:000084FA sub.w e6, e0 ROM:000084FC mov.b @er0, r0l ROM:000084FE ROM:000084FE loc_84FE: ; CODE XREF: drawImageInSomeWeirdWay+21Aj ROM:000084FE dec.w #1, e0 ROM:00008500 bmi loc_8506:8 ROM:00008502 shlr.b r0l ROM:00008504 bra loc_84FE:8 ROM:00008506 ; --------------------------------------------------------------------------- ROM:00008506 ROM:00008506 loc_8506: ; CODE XREF: drawImageInSomeWeirdWay+216j ROM:00008506 mov.b @er3, r3l ROM:00008508 mov.w e6, r1 ROM:0000850A ROM:0000850A loc_850A: ; CODE XREF: drawImageInSomeWeirdWay+226j ROM:0000850A dec.b r1l ROM:0000850C bmi loc_8512:8 ROM:0000850E shll.b r3l ROM:00008510 bra loc_850A:8 ROM:00008512 ; --------------------------------------------------------------------------- ROM:00008512 ROM:00008512 loc_8512: ; CODE XREF: drawImageInSomeWeirdWay+222j ROM:00008512 or.b r3l, r0l ROM:00008514 mov.b r0l, r5l ROM:00008516 ROM:00008516 loc_8516: ; CODE XREF: drawImageInSomeWeirdWay+232j ROM:00008516 mov.b @SSU_SSSR:16, r0l ROM:0000851A bld #2, r0l ROM:0000851C bcc loc_8516:8 ROM:0000851E mov.b r5l, @SSU_SSTDR:16 ROM:00008522 bra loc_8556:8 ROM:00008524 ; --------------------------------------------------------------------------- ROM:00008524 ROM:00008524 loc_8524: ; CODE XREF: drawImageInSomeWeirdWay+1D6j ROM:00008524 mov.b @er6, r5l ROM:00008526 mov.w e6, r0 ROM:00008528 ROM:00008528 loc_8528: ; CODE XREF: drawImageInSomeWeirdWay+244j ROM:00008528 dec.b r0l ROM:0000852A bmi loc_8530:8 ROM:0000852C shll.b r5l ROM:0000852E bra loc_8528:8 ROM:00008530 ; --------------------------------------------------------------------------- ROM:00008530 ROM:00008530 loc_8530: ; CODE XREF: drawImageInSomeWeirdWay+240j ROM:00008530 ; drawImageInSomeWeirdWay+24Cj ROM:00008530 mov.b @SSU_SSSR:16, r0l ROM:00008534 bld #2, r0l ROM:00008536 bcc loc_8530:8 ROM:00008538 mov.b r5l, @SSU_SSTDR:16 ROM:0000853C mov.b @er3, r3l ROM:0000853E mov.w e6, r0 ROM:00008540 ROM:00008540 loc_8540: ; CODE XREF: drawImageInSomeWeirdWay+25Cj ROM:00008540 dec.b r0l ROM:00008542 bmi loc_8548:8 ROM:00008544 shll.b r3l ROM:00008546 bra loc_8540:8 ROM:00008548 ; --------------------------------------------------------------------------- ROM:00008548 ROM:00008548 loc_8548: ; CODE XREF: drawImageInSomeWeirdWay+258j ROM:00008548 mov.b r3l, r5l ROM:0000854A ROM:0000854A loc_854A: ; CODE XREF: drawImageInSomeWeirdWay+266j ROM:0000854A mov.b @SSU_SSSR:16, r0l ROM:0000854E bld #2, r0l ROM:00008550 bcc loc_854A:8 ROM:00008552 mov.b r5l, @SSU_SSTDR:16 ROM:00008556 ROM:00008556 loc_8556: ; CODE XREF: drawImageInSomeWeirdWay+144j ROM:00008556 ; drawImageInSomeWeirdWay+184j ... ROM:00008556 inc.w #1, e4 ROM:00008558 inc.w #2, r6 ROM:0000855A ROM:0000855A loc_855A: ; CODE XREF: drawImageInSomeWeirdWay+13Ej ROM:0000855A mov.w @(0xC+var_A:16,sp), r0 ROM:0000855E cmp.w r0, e4 ROM:00008560 blt loc_842C:16 ROM:00008564 ROM:00008564 loc_8564: ; CODE XREF: drawImageInSomeWeirdWay+280j ROM:00008564 mov.b @SSU_SSSR:16, r0l ROM:00008568 bld #3, r0l ROM:0000856A bcc loc_8564:8 ROM:0000856C ROM:0000856C loc_856C: ; CODE XREF: drawImageInSomeWeirdWay+8Aj ROM:0000856C inc.w #1, e1 ROM:0000856E ROM:0000856E loc_856E: ; CODE XREF: drawImageInSomeWeirdWay+78j ROM:0000856E mov.w e5, r0 ROM:00008570 cmp.w r0, e1 ROM:00008572 blt loc_8366:16 ROM:00008576 ROM:00008576 loc_8576: ; CODE XREF: drawImageInSomeWeirdWay+80j ROM:00008576 ; drawImageInSomeWeirdWay+292j ROM:00008576 mov.b @SSU_SSSR:16, r0l ROM:0000857A bld #3, r0l ROM:0000857C bcc loc_8576:8 ROM:0000857E bset #0, @IO_PDR1:8 ROM:00008582 add.w #0xC, r7 ROM:00008586 jmp common_epilogue_3:24 ROM:00008586 ; End of function drawImageInSomeWeirdWay ROM:00008586 ROM:0000858A ROM:0000858A ; =============== S U B R O U T I N E ======================================= ROM:0000858A ROM:0000858A ; (r0l = x, r0h = y, e0 = char*) ROM:0000858A ROM:0000858A drawTinyChars: ; CODE XREF: drawNG6inTinyChars+8j ROM:0000858A ; DATA XREF: drawSomethingWithTinyChars+4o ... ROM:0000858A jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:0000858E mov.b r0l, r5l ROM:00008590 mov.w e0, r4 ROM:00008592 mov.b #0x80, r1l ; 'Ç' ROM:00008594 mov.b r1l, @SSU_SSER:16 ROM:00008598 bclr #0, @IO_PDR1:8 ROM:0000859C shlr.b r0h ROM:0000859E shlr.b r0h ROM:000085A0 shlr.b r0h ROM:000085A2 mov.b r0h, r6l ROM:000085A4 mov.b r5l, r6h ROM:000085A6 bclr #1, @IO_PDR1:8 ROM:000085AA ROM:000085AA loc_85AA: ; CODE XREF: drawTinyChars+26j ROM:000085AA mov.b @SSU_SSSR:16, r0l ROM:000085AE bld #2, r0l ROM:000085B0 bcc loc_85AA:8 ROM:000085B2 mov.b r6h, r0l ROM:000085B4 mov.b #0x10, r1l ROM:000085B6 sub.b r0h, r0h ROM:000085B8 divxu.b r1l, r0 ROM:000085BA and.b #7, r0l ROM:000085BC add.b #0x10, r0l ROM:000085BE mov.b r0l, @SSU_SSTDR:16 ROM:000085C2 ROM:000085C2 loc_85C2: ; CODE XREF: drawTinyChars+3Ej ROM:000085C2 mov.b @SSU_SSSR:16, r0l ROM:000085C6 bld #2, r0l ROM:000085C8 bcc loc_85C2:8 ROM:000085CA and.b #0xF, r6h ROM:000085CC mov.b r6h, @SSU_SSTDR:16 ROM:000085D0 cmp.b #7, r6l ROM:000085D2 bls loc_85D6:8 ROM:000085D4 sleep ROM:000085D6 ROM:000085D6 loc_85D6: ; CODE XREF: drawTinyChars+48j ROM:000085D6 ; drawTinyChars+52j ROM:000085D6 mov.b @SSU_SSSR:16, r0l ROM:000085DA bld #2, r0l ROM:000085DC bcc loc_85D6:8 ROM:000085DE mov.b @byte_FFF7E4:16, r0l ROM:000085E2 mov.b #8, r0h ROM:000085E4 mulxu.b r0h, r0 ROM:000085E6 add.b r6l, r0l ROM:000085E8 add.b #0xB0, r0l ; '¦' ROM:000085EA mov.b r0l, @SSU_SSTDR:16 ROM:000085EE ROM:000085EE loc_85EE: ; CODE XREF: drawTinyChars+6Aj ROM:000085EE mov.b @SSU_SSSR:16, r0l ROM:000085F2 bld #3, r0l ROM:000085F4 bcc loc_85EE:8 ROM:000085F6 bset #1, @IO_PDR1:8 ROM:000085FA jmp loc_8750:24 ROM:000085FE ; --------------------------------------------------------------------------- ROM:000085FE ROM:000085FE loc_85FE: ; CODE XREF: drawTinyChars+1C8j ROM:000085FE mov.b @er4+, r6l ROM:00008600 cmp.b #0x20, r6l ; ' ' ROM:00008602 bne loc_8678:8 ROM:00008604 ROM:00008604 loc_8604: ; CODE XREF: drawTinyChars+80j ROM:00008604 mov.b @SSU_SSSR:16, r0l ROM:00008608 bld #2, r0l ROM:0000860A bcc loc_8604:8 ROM:0000860C sub.b r0l, r0l ROM:0000860E mov.b r0l, @SSU_SSTDR:16 ROM:00008612 ROM:00008612 loc_8612: ; CODE XREF: drawTinyChars+8Ej ROM:00008612 mov.b @SSU_SSSR:16, r0l ROM:00008616 bld #2, r0l ROM:00008618 bcc loc_8612:8 ROM:0000861A sub.b r0l, r0l ROM:0000861C mov.b r0l, @SSU_SSTDR:16 ROM:00008620 ROM:00008620 loc_8620: ; CODE XREF: drawTinyChars+9Cj ROM:00008620 mov.b @SSU_SSSR:16, r0l ROM:00008624 bld #2, r0l ROM:00008626 bcc loc_8620:8 ROM:00008628 sub.b r0l, r0l ROM:0000862A mov.b r0l, @SSU_SSTDR:16 ROM:0000862E ROM:0000862E loc_862E: ; CODE XREF: drawTinyChars+AAj ROM:0000862E mov.b @SSU_SSSR:16, r0l ROM:00008632 bld #2, r0l ROM:00008634 bcc loc_862E:8 ROM:00008636 sub.b r0l, r0l ROM:00008638 mov.b r0l, @SSU_SSTDR:16 ROM:0000863C ROM:0000863C loc_863C: ; CODE XREF: drawTinyChars+B8j ROM:0000863C mov.b @SSU_SSSR:16, r0l ROM:00008640 bld #2, r0l ROM:00008642 bcc loc_863C:8 ROM:00008644 sub.b r0l, r0l ROM:00008646 mov.b r0l, @SSU_SSTDR:16 ROM:0000864A ROM:0000864A loc_864A: ; CODE XREF: drawTinyChars+C6j ROM:0000864A mov.b @SSU_SSSR:16, r0l ROM:0000864E bld #2, r0l ROM:00008650 bcc loc_864A:8 ROM:00008652 sub.b r0l, r0l ROM:00008654 mov.b r0l, @SSU_SSTDR:16 ROM:00008658 ROM:00008658 loc_8658: ; CODE XREF: drawTinyChars+D4j ROM:00008658 mov.b @SSU_SSSR:16, r0l ROM:0000865C bld #2, r0l ROM:0000865E bcc loc_8658:8 ROM:00008660 sub.b r0l, r0l ROM:00008662 mov.b r0l, @SSU_SSTDR:16 ROM:00008666 ROM:00008666 loc_8666: ; CODE XREF: drawTinyChars+E2j ROM:00008666 mov.b @SSU_SSSR:16, r0l ROM:0000866A bld #2, r0l ROM:0000866C bcc loc_8666:8 ROM:0000866E sub.b r0l, r0l ROM:00008670 mov.b r0l, @SSU_SSTDR:16 ROM:00008674 jmp loc_874E:24 ROM:00008678 ; --------------------------------------------------------------------------- ROM:00008678 ROM:00008678 loc_8678: ; CODE XREF: drawTinyChars+78j ROM:00008678 cmp.b #0x39, r6l ; '9' ROM:0000867A bls loc_86E6:8 ROM:0000867C add.b #-0x37, r6l ; 'A'-10 = 0x37 ROM:0000867E mov.b r6l, r6h ROM:00008680 bclr #0, @IO_PDR1:8 ROM:00008684 sub.b r6l, r6l ROM:00008686 ROM:00008686 loc_8686: ; CODE XREF: drawTinyChars+102j ROM:00008686 ; drawTinyChars+134j ROM:00008686 mov.b @SSU_SSSR:16, r0l ROM:0000868A bld #2, r0l ROM:0000868C bcc loc_8686:8 ROM:0000868E mov.b #3, r0l ROM:00008690 mulxu.b r6h, r0 ROM:00008692 mov.b r6l, r1l ROM:00008694 extu.w r1 ROM:00008696 add.w r1, r0 ROM:00008698 mov.b @(TINY_CHARS,er0), r0l ; lsb is top pixel. 3-px wide chars. 1bpp ROM:0000869C mov.b r0l, @SSU_SSTDR:16 ROM:000086A0 ROM:000086A0 loc_86A0: ; CODE XREF: drawTinyChars+11Cj ROM:000086A0 mov.b @SSU_SSSR:16, r0l ROM:000086A4 bld #2, r0l ROM:000086A6 bcc loc_86A0:8 ROM:000086A8 mov.b #3, r0l ROM:000086AA mulxu.b r6h, r0 ROM:000086AC mov.b r6l, r1l ROM:000086AE extu.w r1 ROM:000086B0 add.w r1, r0 ROM:000086B2 mov.b @(TINY_CHARS,er0), r0l ; lsb is top pixel. 3-px wide chars. 1bpp ROM:000086B6 mov.b r0l, @SSU_SSTDR:16 ROM:000086BA inc.b r6l ROM:000086BC cmp.b #3, r6l ROM:000086BE bcs loc_8686:8 ROM:000086C0 ROM:000086C0 loc_86C0: ; CODE XREF: drawTinyChars+13Cj ROM:000086C0 mov.b @SSU_SSSR:16, r0l ROM:000086C4 bld #2, r0l ROM:000086C6 bcc loc_86C0:8 ROM:000086C8 sub.b r0l, r0l ROM:000086CA mov.b r0l, @SSU_SSTDR:16 ROM:000086CE ROM:000086CE loc_86CE: ; CODE XREF: drawTinyChars+14Aj ROM:000086CE mov.b @SSU_SSSR:16, r0l ROM:000086D2 bld #2, r0l ROM:000086D4 bcc loc_86CE:8 ROM:000086D6 sub.b r0l, r0l ROM:000086D8 mov.b r0l, @SSU_SSTDR:16 ROM:000086DC ROM:000086DC loc_86DC: ; CODE XREF: drawTinyChars+15Aj ROM:000086DC mov.b @SSU_SSSR:16, r0l ROM:000086E0 bld #3, r0l ROM:000086E2 bcs loc_874E:8 ROM:000086E4 bra loc_86DC:8 ROM:000086E6 ; --------------------------------------------------------------------------- ROM:000086E6 ROM:000086E6 loc_86E6: ; CODE XREF: drawTinyChars+F0j ROM:000086E6 add.b #-0x30, r6l ROM:000086E8 mov.b r6l, r6h ROM:000086EA bclr #0, @IO_PDR1:8 ROM:000086EE sub.b r6l, r6l ROM:000086F0 ROM:000086F0 loc_86F0: ; CODE XREF: drawTinyChars+16Cj ROM:000086F0 ; drawTinyChars+19Ej ROM:000086F0 mov.b @SSU_SSSR:16, r0l ROM:000086F4 bld #2, r0l ROM:000086F6 bcc loc_86F0:8 ROM:000086F8 mov.b #3, r0l ROM:000086FA mulxu.b r6h, r0 ROM:000086FC mov.b r6l, r1l ROM:000086FE extu.w r1 ROM:00008700 add.w r1, r0 ROM:00008702 mov.b @(TINY_CHARS,er0), r0l ; lsb is top pixel. 3-px wide chars. 1bpp ROM:00008706 mov.b r0l, @SSU_SSTDR:16 ROM:0000870A ROM:0000870A loc_870A: ; CODE XREF: drawTinyChars+186j ROM:0000870A mov.b @SSU_SSSR:16, r0l ROM:0000870E bld #2, r0l ROM:00008710 bcc loc_870A:8 ROM:00008712 mov.b #3, r0l ROM:00008714 mulxu.b r6h, r0 ROM:00008716 mov.b r6l, r1l ROM:00008718 extu.w r1 ROM:0000871A add.w r1, r0 ROM:0000871C mov.b @(TINY_CHARS,er0), r0l ; lsb is top pixel. 3-px wide chars. 1bpp ROM:00008720 mov.b r0l, @SSU_SSTDR:16 ROM:00008724 inc.b r6l ROM:00008726 cmp.b #3, r6l ROM:00008728 bcs loc_86F0:8 ROM:0000872A ROM:0000872A loc_872A: ; CODE XREF: drawTinyChars+1A6j ROM:0000872A mov.b @SSU_SSSR:16, r0l ROM:0000872E bld #2, r0l ROM:00008730 bcc loc_872A:8 ROM:00008732 sub.b r0l, r0l ROM:00008734 mov.b r0l, @SSU_SSTDR:16 ROM:00008738 ROM:00008738 loc_8738: ; CODE XREF: drawTinyChars+1B4j ROM:00008738 mov.b @SSU_SSSR:16, r0l ROM:0000873C bld #2, r0l ROM:0000873E bcc loc_8738:8 ROM:00008740 sub.b r0l, r0l ROM:00008742 mov.b r0l, @SSU_SSTDR:16 ROM:00008746 ROM:00008746 loc_8746: ; CODE XREF: drawTinyChars+1C2j ROM:00008746 mov.b @SSU_SSSR:16, r0l ROM:0000874A bld #3, r0l ROM:0000874C bcc loc_8746:8 ROM:0000874E ROM:0000874E loc_874E: ; CODE XREF: drawTinyChars+EAj ROM:0000874E ; drawTinyChars+158j ROM:0000874E add.b #4, r5l ROM:00008750 ROM:00008750 loc_8750: ; CODE XREF: drawTinyChars+70j ROM:00008750 mov.b @er4, r0l ROM:00008752 bne loc_85FE:16 ROM:00008756 ROM:00008756 loc_8756: ; CODE XREF: drawTinyChars+1D2j ROM:00008756 mov.b @SSU_SSSR:16, r0l ROM:0000875A bld #3, r0l ROM:0000875C bcc loc_8756:8 ROM:0000875E bset #0, @IO_PDR1:8 ROM:00008762 jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:00008762 ; End of function drawTinyChars ROM:00008762 ROM:00008766 ROM:00008766 ; =============== S U B R O U T I N E ======================================= ROM:00008766 ROM:00008766 ROM:00008766 someFullLcdDrawingThing: ; CODE XREF: drawCurPokemonNameWithBorders:loc_1A7Cp ROM:00008766 ; drawPeerPokemonName+14p ... ROM:00008766 mov.w #byte_FFF7E4, r1 ROM:0000876A mov.b #0x80, r0l ; 'Ç' ROM:0000876C mov.b r0l, @SSU_SSER:16 ROM:00008770 bclr #0, @IO_PDR1:8 ROM:00008774 bclr #1, @IO_PDR1:8 ROM:00008778 ROM:00008778 loc_8778: ; CODE XREF: someFullLcdDrawingThing+18j ROM:00008778 mov.b @SSU_SSSR:16, r0l ROM:0000877C bld #2, r0l ROM:0000877E bcc loc_8778:8 ROM:00008780 mov.b #0x10, r0l ROM:00008782 mov.b r0l, @SSU_SSTDR:16 ROM:00008786 ROM:00008786 loc_8786: ; CODE XREF: someFullLcdDrawingThing+26j ROM:00008786 mov.b @SSU_SSSR:16, r0l ROM:0000878A bld #2, r0l ROM:0000878C bcc loc_8786:8 ROM:0000878E sub.b r0l, r0l ROM:00008790 mov.b r0l, @SSU_SSTDR:16 ROM:00008794 ROM:00008794 loc_8794: ; CODE XREF: someFullLcdDrawingThing+34j ROM:00008794 mov.b @SSU_SSSR:16, r0l ROM:00008798 bld #2, r0l ROM:0000879A bcc loc_8794:8 ROM:0000879C mov.b @er1, r0l ROM:0000879E mov.b #8, r0h ROM:000087A0 mulxu.b r0h, r0 ROM:000087A2 add.b #0xB4, r0l ; '¦' ROM:000087A4 mov.b r0l, @SSU_SSTDR:16 ROM:000087A8 ROM:000087A8 loc_87A8: ; CODE XREF: someFullLcdDrawingThing+48j ROM:000087A8 mov.b @SSU_SSSR:16, r0l ROM:000087AC bld #3, r0l ROM:000087AE bcc loc_87A8:8 ROM:000087B0 bset #1, @IO_PDR1:8 ROM:000087B4 ROM:000087B4 loc_87B4: ; CODE XREF: someFullLcdDrawingThing+54j ROM:000087B4 mov.b @SSU_SSSR:16, r0l ROM:000087B8 bld #2, r0l ROM:000087BA bcc loc_87B4:8 ROM:000087BC mov.b #0xFF, r0l ROM:000087BE mov.b r0l, @SSU_SSTDR:16 ROM:000087C2 ROM:000087C2 loc_87C2: ; CODE XREF: someFullLcdDrawingThing+62j ROM:000087C2 mov.b @SSU_SSSR:16, r0l ROM:000087C6 bld #2, r0l ROM:000087C8 bcc loc_87C2:8 ROM:000087CA mov.b #0xFF, r0l ROM:000087CC mov.b r0l, @SSU_SSTDR:16 ROM:000087D0 mov.b #0xBC, r0h ; '+' ROM:000087D2 bra loc_87E4:8 ROM:000087D4 ; --------------------------------------------------------------------------- ROM:000087D4 ROM:000087D4 loc_87D4: ; CODE XREF: someFullLcdDrawingThing+74j ROM:000087D4 ; someFullLcdDrawingThing+80j ROM:000087D4 mov.b @SSU_SSSR:16, r0l ROM:000087D8 bld #2, r0l ROM:000087DA bcc loc_87D4:8 ROM:000087DC mov.b #1, r0l ROM:000087DE mov.b r0l, @SSU_SSTDR:16 ROM:000087E2 dec.b r0h ROM:000087E4 ROM:000087E4 loc_87E4: ; CODE XREF: someFullLcdDrawingThing+6Cj ROM:000087E4 mov.b r0h, r0h ROM:000087E6 bne loc_87D4:8 ROM:000087E8 ROM:000087E8 loc_87E8: ; CODE XREF: someFullLcdDrawingThing+88j ROM:000087E8 mov.b @SSU_SSSR:16, r0l ROM:000087EC bld #2, r0l ROM:000087EE bcc loc_87E8:8 ROM:000087F0 mov.b #0xFF, r0l ROM:000087F2 mov.b r0l, @SSU_SSTDR:16 ROM:000087F6 ROM:000087F6 loc_87F6: ; CODE XREF: someFullLcdDrawingThing+96j ROM:000087F6 mov.b @SSU_SSSR:16, r0l ROM:000087FA bld #2, r0l ROM:000087FC bcc loc_87F6:8 ROM:000087FE mov.b #0xFF, r0l ROM:00008800 mov.b r0l, @SSU_SSTDR:16 ROM:00008804 ROM:00008804 loc_8804: ; CODE XREF: someFullLcdDrawingThing+A4j ROM:00008804 mov.b @SSU_SSSR:16, r0l ROM:00008808 bld #3, r0l ROM:0000880A bcc loc_8804:8 ROM:0000880C bclr #1, @IO_PDR1:8 ROM:00008810 ROM:00008810 loc_8810: ; CODE XREF: someFullLcdDrawingThing+B0j ROM:00008810 mov.b @SSU_SSSR:16, r0l ROM:00008814 bld #2, r0l ROM:00008816 bcc loc_8810:8 ROM:00008818 mov.b #0x10, r0l ROM:0000881A mov.b r0l, @SSU_SSTDR:16 ROM:0000881E ROM:0000881E loc_881E: ; CODE XREF: someFullLcdDrawingThing+BEj ROM:0000881E mov.b @SSU_SSSR:16, r0l ROM:00008822 bld #2, r0l ROM:00008824 bcc loc_881E:8 ROM:00008826 sub.b r0l, r0l ROM:00008828 mov.b r0l, @SSU_SSTDR:16 ROM:0000882C ROM:0000882C loc_882C: ; CODE XREF: someFullLcdDrawingThing+CCj ROM:0000882C mov.b @SSU_SSSR:16, r0l ROM:00008830 bld #2, r0l ROM:00008832 bcc loc_882C:8 ROM:00008834 mov.b @er1, r0l ROM:00008836 mov.b #8, r0h ROM:00008838 mulxu.b r0h, r0 ROM:0000883A add.b #0xB5, r0l ; '¦' ROM:0000883C mov.b r0l, @SSU_SSTDR:16 ROM:00008840 ROM:00008840 loc_8840: ; CODE XREF: someFullLcdDrawingThing+E0j ROM:00008840 mov.b @SSU_SSSR:16, r0l ROM:00008844 bld #3, r0l ROM:00008846 bcc loc_8840:8 ROM:00008848 bset #1, @IO_PDR1:8 ROM:0000884C ROM:0000884C loc_884C: ; CODE XREF: someFullLcdDrawingThing+ECj ROM:0000884C mov.b @SSU_SSSR:16, r0l ROM:00008850 bld #2, r0l ROM:00008852 bcc loc_884C:8 ROM:00008854 mov.b #0xFF, r0l ROM:00008856 mov.b r0l, @SSU_SSTDR:16 ROM:0000885A ROM:0000885A loc_885A: ; CODE XREF: someFullLcdDrawingThing+FAj ROM:0000885A mov.b @SSU_SSSR:16, r0l ROM:0000885E bld #2, r0l ROM:00008860 bcc loc_885A:8 ROM:00008862 mov.b #0xFF, r0l ROM:00008864 mov.b r0l, @SSU_SSTDR:16 ROM:00008868 ROM:00008868 loc_8868: ; CODE XREF: someFullLcdDrawingThing+108j ROM:00008868 mov.b @SSU_SSSR:16, r0l ROM:0000886C bld #3, r0l ROM:0000886E bcc loc_8868:8 ROM:00008870 bclr #1, @IO_PDR1:8 ROM:00008874 ROM:00008874 loc_8874: ; CODE XREF: someFullLcdDrawingThing+114j ROM:00008874 mov.b @SSU_SSSR:16, r0l ROM:00008878 bld #2, r0l ROM:0000887A bcc loc_8874:8 ROM:0000887C mov.b #0x15, r0l ROM:0000887E mov.b r0l, @SSU_SSTDR:16 ROM:00008882 ROM:00008882 loc_8882: ; CODE XREF: someFullLcdDrawingThing+122j ROM:00008882 mov.b @SSU_SSSR:16, r0l ROM:00008886 bld #2, r0l ROM:00008888 bcc loc_8882:8 ROM:0000888A mov.b #0xF, r0l ROM:0000888C mov.b r0l, @SSU_SSTDR:16 ROM:00008890 ROM:00008890 loc_8890: ; CODE XREF: someFullLcdDrawingThing+130j ROM:00008890 mov.b @SSU_SSSR:16, r0l ROM:00008894 bld #2, r0l ROM:00008896 bcc loc_8890:8 ROM:00008898 mov.b @er1, r0l ROM:0000889A mov.b #8, r0h ROM:0000889C mulxu.b r0h, r0 ROM:0000889E add.b #0xB5, r0l ; '¦' ROM:000088A0 mov.b r0l, @SSU_SSTDR:16 ROM:000088A4 ROM:000088A4 loc_88A4: ; CODE XREF: someFullLcdDrawingThing+144j ROM:000088A4 mov.b @SSU_SSSR:16, r0l ROM:000088A8 bld #3, r0l ROM:000088AA bcc loc_88A4:8 ROM:000088AC bset #1, @IO_PDR1:8 ROM:000088B0 ROM:000088B0 loc_88B0: ; CODE XREF: someFullLcdDrawingThing+150j ROM:000088B0 mov.b @SSU_SSSR:16, r0l ROM:000088B4 bld #2, r0l ROM:000088B6 bcc loc_88B0:8 ROM:000088B8 mov.b #0xFF, r0l ROM:000088BA mov.b r0l, @SSU_SSTDR:16 ROM:000088BE ROM:000088BE loc_88BE: ; CODE XREF: someFullLcdDrawingThing+15Ej ROM:000088BE mov.b @SSU_SSSR:16, r0l ROM:000088C2 bld #2, r0l ROM:000088C4 bcc loc_88BE:8 ROM:000088C6 mov.b #0xFF, r0l ROM:000088C8 mov.b r0l, @SSU_SSTDR:16 ROM:000088CC ROM:000088CC loc_88CC: ; CODE XREF: someFullLcdDrawingThing+16Cj ROM:000088CC mov.b @SSU_SSSR:16, r0l ROM:000088D0 bld #3, r0l ROM:000088D2 bcc loc_88CC:8 ROM:000088D4 ROM:000088D4 loc_88D4: ; CODE XREF: someFullLcdDrawingThing+174j ROM:000088D4 mov.b @SSU_SSSR:16, r0l ROM:000088D8 bld #3, r0l ROM:000088DA bcc loc_88D4:8 ROM:000088DC bset #0, @IO_PDR1:8 ROM:000088E0 rts ROM:000088E0 ; End of function someFullLcdDrawingThing ROM:000088E0 ROM:000088E2 ROM:000088E2 ; =============== S U B R O U T I N E ======================================= ROM:000088E2 ROM:000088E2 ROM:000088E2 someFullLcdDrawingThin2: ; CODE XREF: drawCurPokemonNameWithBorders+1Ep ROM:000088E2 ; showEventPokeNameAndMaybeAnimation+18p ... ROM:000088E2 mov.b #0x80, r0l ; 'Ç' ROM:000088E4 mov.b r0l, @SSU_SSER:16 ROM:000088E8 bclr #0, @IO_PDR1:8 ; lcd selected ROM:000088EC bclr #1, @IO_PDR1:8 ; lcd command ROM:000088F0 ROM:000088F0 loc_88F0: ; CODE XREF: someFullLcdDrawingThin2+14j ROM:000088F0 mov.b @SSU_SSSR:16, r0l ROM:000088F4 bld #2, r0l ROM:000088F6 bcc loc_88F0:8 ROM:000088F8 mov.b #0x10, r0l ; col.hi = 0 ROM:000088FA mov.b r0l, @SSU_SSTDR:16 ROM:000088FE ROM:000088FE loc_88FE: ; CODE XREF: someFullLcdDrawingThin2+22j ROM:000088FE mov.b @SSU_SSSR:16, r0l ROM:00008902 bld #2, r0l ROM:00008904 bcc loc_88FE:8 ROM:00008906 sub.b r0l, r0l ; col.lo = 0 ROM:00008908 mov.b r0l, @SSU_SSTDR:16 ROM:0000890C ROM:0000890C loc_890C: ; CODE XREF: someFullLcdDrawingThin2+30j ROM:0000890C mov.b @SSU_SSSR:16, r0l ROM:00008910 bld #2, r0l ROM:00008912 bcc loc_890C:8 ROM:00008914 mov.b @byte_FFF7E4:16, r0l ROM:00008918 mov.b #8, r0h ROM:0000891A mulxu.b r0h, r0 ROM:0000891C add.b #0xB6, r0l ; '¦' ; page address set ROM:0000891E mov.b r0l, @SSU_SSTDR:16 ROM:00008922 ROM:00008922 loc_8922: ; CODE XREF: someFullLcdDrawingThin2+46j ROM:00008922 mov.b @SSU_SSSR:16, r0l ROM:00008926 bld #3, r0l ROM:00008928 bcc loc_8922:8 ROM:0000892A bset #1, @IO_PDR1:8 ; commands over ROM:0000892E ROM:0000892E loc_892E: ; CODE XREF: someFullLcdDrawingThin2+52j ROM:0000892E mov.b @SSU_SSSR:16, r0l ROM:00008932 bld #2, r0l ROM:00008934 bcc loc_892E:8 ROM:00008936 mov.b #0xFF, r0l ; send 0xFF ROM:00008938 mov.b r0l, @SSU_SSTDR:16 ROM:0000893C ROM:0000893C loc_893C: ; CODE XREF: someFullLcdDrawingThin2+60j ROM:0000893C mov.b @SSU_SSSR:16, r0l ROM:00008940 bld #2, r0l ROM:00008942 bcc loc_893C:8 ROM:00008944 mov.b #0xFF, r0l ROM:00008946 mov.b r0l, @SSU_SSTDR:16 ROM:0000894A mov.b #0xBC, r0h ; '+' ROM:0000894C bra loc_895E:8 ROM:0000894E ; --------------------------------------------------------------------------- ROM:0000894E ROM:0000894E loc_894E: ; CODE XREF: someFullLcdDrawingThin2+72j ROM:0000894E ; someFullLcdDrawingThin2+7Ej ROM:0000894E mov.b @SSU_SSSR:16, r0l ROM:00008952 bld #2, r0l ROM:00008954 bcc loc_894E:8 ROM:00008956 mov.b #1, r0l ROM:00008958 mov.b r0l, @SSU_SSTDR:16 ROM:0000895C dec.b r0h ROM:0000895E ROM:0000895E loc_895E: ; CODE XREF: someFullLcdDrawingThin2+6Aj ROM:0000895E mov.b r0h, r0h ROM:00008960 bne loc_894E:8 ROM:00008962 ROM:00008962 loc_8962: ; CODE XREF: someFullLcdDrawingThin2+86j ROM:00008962 mov.b @SSU_SSSR:16, r0l ROM:00008966 bld #2, r0l ROM:00008968 bcc loc_8962:8 ROM:0000896A mov.b #0xFF, r0l ROM:0000896C mov.b r0l, @SSU_SSTDR:16 ROM:00008970 ROM:00008970 loc_8970: ; CODE XREF: someFullLcdDrawingThin2+94j ROM:00008970 mov.b @SSU_SSSR:16, r0l ROM:00008974 bld #2, r0l ROM:00008976 bcc loc_8970:8 ROM:00008978 mov.b #0xFF, r0l ROM:0000897A mov.b r0l, @SSU_SSTDR:16 ROM:0000897E ROM:0000897E loc_897E: ; CODE XREF: someFullLcdDrawingThin2+A2j ROM:0000897E mov.b @SSU_SSSR:16, r0l ROM:00008982 bld #3, r0l ROM:00008984 bcc loc_897E:8 ROM:00008986 bclr #1, @IO_PDR1:8 ROM:0000898A ROM:0000898A loc_898A: ; CODE XREF: someFullLcdDrawingThin2+AEj ROM:0000898A mov.b @SSU_SSSR:16, r0l ROM:0000898E bld #2, r0l ROM:00008990 bcc loc_898A:8 ROM:00008992 mov.b #0x10, r0l ROM:00008994 mov.b r0l, @SSU_SSTDR:16 ROM:00008998 ROM:00008998 loc_8998: ; CODE XREF: someFullLcdDrawingThin2+BCj ROM:00008998 mov.b @SSU_SSSR:16, r0l ROM:0000899C bld #2, r0l ROM:0000899E bcc loc_8998:8 ROM:000089A0 sub.b r0l, r0l ROM:000089A2 mov.b r0l, @SSU_SSTDR:16 ROM:000089A6 ROM:000089A6 loc_89A6: ; CODE XREF: someFullLcdDrawingThin2+CAj ROM:000089A6 mov.b @SSU_SSSR:16, r0l ROM:000089AA bld #2, r0l ROM:000089AC bcc loc_89A6:8 ROM:000089AE mov.b @byte_FFF7E4:16, r0l ROM:000089B2 mov.b #8, r0h ROM:000089B4 mulxu.b r0h, r0 ROM:000089B6 add.b #0xB7, r0l ; '+' ROM:000089B8 mov.b r0l, @SSU_SSTDR:16 ROM:000089BC ROM:000089BC loc_89BC: ; CODE XREF: someFullLcdDrawingThin2+E0j ROM:000089BC mov.b @SSU_SSSR:16, r0l ROM:000089C0 bld #3, r0l ROM:000089C2 bcc loc_89BC:8 ROM:000089C4 bset #1, @IO_PDR1:8 ROM:000089C8 ROM:000089C8 loc_89C8: ; CODE XREF: someFullLcdDrawingThin2+ECj ROM:000089C8 mov.b @SSU_SSSR:16, r0l ROM:000089CC bld #2, r0l ROM:000089CE bcc loc_89C8:8 ROM:000089D0 mov.b #0xFF, r0l ROM:000089D2 mov.b r0l, @SSU_SSTDR:16 ROM:000089D6 ROM:000089D6 loc_89D6: ; CODE XREF: someFullLcdDrawingThin2+FAj ROM:000089D6 mov.b @SSU_SSSR:16, r0l ROM:000089DA bld #2, r0l ROM:000089DC bcc loc_89D6:8 ROM:000089DE mov.b #0xFF, r0l ROM:000089E0 mov.b r0l, @SSU_SSTDR:16 ROM:000089E4 ROM:000089E4 loc_89E4: ; CODE XREF: someFullLcdDrawingThin2+108j ROM:000089E4 mov.b @SSU_SSSR:16, r0l ROM:000089E8 bld #3, r0l ROM:000089EA bcc loc_89E4:8 ROM:000089EC mov.b #0xBC, r0h ; '+' ROM:000089EE bra loc_8A00:8 ROM:000089F0 ; --------------------------------------------------------------------------- ROM:000089F0 ROM:000089F0 loc_89F0: ; CODE XREF: someFullLcdDrawingThin2+114j ROM:000089F0 ; someFullLcdDrawingThin2+120j ROM:000089F0 mov.b @SSU_SSSR:16, r0l ROM:000089F4 bld #2, r0l ROM:000089F6 bcc loc_89F0:8 ROM:000089F8 mov.b #0x80, r0l ; 'Ç' ROM:000089FA mov.b r0l, @SSU_SSTDR:16 ROM:000089FE dec.b r0h ROM:00008A00 ROM:00008A00 loc_8A00: ; CODE XREF: someFullLcdDrawingThin2+10Cj ROM:00008A00 mov.b r0h, r0h ROM:00008A02 bne loc_89F0:8 ROM:00008A04 ROM:00008A04 loc_8A04: ; CODE XREF: someFullLcdDrawingThin2+128j ROM:00008A04 mov.b @SSU_SSSR:16, r0l ROM:00008A08 bld #2, r0l ROM:00008A0A bcc loc_8A04:8 ROM:00008A0C mov.b #0xFF, r0l ROM:00008A0E mov.b r0l, @SSU_SSTDR:16 ROM:00008A12 ROM:00008A12 loc_8A12: ; CODE XREF: someFullLcdDrawingThin2+136j ROM:00008A12 mov.b @SSU_SSSR:16, r0l ROM:00008A16 bld #2, r0l ROM:00008A18 bcc loc_8A12:8 ROM:00008A1A mov.b #0xFF, r0l ROM:00008A1C mov.b r0l, @SSU_SSTDR:16 ROM:00008A20 ROM:00008A20 loc_8A20: ; CODE XREF: someFullLcdDrawingThin2+144j ROM:00008A20 mov.b @SSU_SSSR:16, r0l ROM:00008A24 bld #3, r0l ROM:00008A26 bcc loc_8A20:8 ROM:00008A28 ROM:00008A28 loc_8A28: ; CODE XREF: someFullLcdDrawingThin2+14Cj ROM:00008A28 mov.b @SSU_SSSR:16, r0l ROM:00008A2C bld #3, r0l ROM:00008A2E bcc loc_8A28:8 ROM:00008A30 bset #0, @IO_PDR1:8 ROM:00008A34 rts ROM:00008A34 ; End of function someFullLcdDrawingThin2 ROM:00008A34 ROM:00008A36 ROM:00008A36 ; =============== S U B R O U T I N E ======================================= ROM:00008A36 ROM:00008A36 ROM:00008A36 someDisaplyNonsense: ; CODE XREF: drawhomeScreenSmallIconsOnBottom+8p ROM:00008A36 mov.b #0x80, r0l ; 'Ç' ROM:00008A38 mov.b r0l, @SSU_SSER:16 ROM:00008A3C bclr #0, @IO_PDR1:8 ROM:00008A40 bclr #1, @IO_PDR1:8 ROM:00008A44 ROM:00008A44 loc_8A44: ; CODE XREF: someDisaplyNonsense+14j ROM:00008A44 mov.b @SSU_SSSR:16, r0l ROM:00008A48 bld #2, r0l ROM:00008A4A bcc loc_8A44:8 ROM:00008A4C mov.b #0x10, r0l ROM:00008A4E mov.b r0l, @SSU_SSTDR:16 ROM:00008A52 ROM:00008A52 loc_8A52: ; CODE XREF: someDisaplyNonsense+22j ROM:00008A52 mov.b @SSU_SSSR:16, r0l ROM:00008A56 bld #2, r0l ROM:00008A58 bcc loc_8A52:8 ROM:00008A5A sub.b r0l, r0l ROM:00008A5C mov.b r0l, @SSU_SSTDR:16 ROM:00008A60 ROM:00008A60 loc_8A60: ; CODE XREF: someDisaplyNonsense+30j ROM:00008A60 mov.b @SSU_SSSR:16, r0l ROM:00008A64 bld #2, r0l ROM:00008A66 bcc loc_8A60:8 ROM:00008A68 mov.b @byte_FFF7E4:16, r0l ROM:00008A6C mov.b #8, r0h ROM:00008A6E mulxu.b r0h, r0 ROM:00008A70 add.b #0xB6, r0l ; '¦' ROM:00008A72 mov.b r0l, @SSU_SSTDR:16 ROM:00008A76 ROM:00008A76 loc_8A76: ; CODE XREF: someDisaplyNonsense+46j ROM:00008A76 mov.b @SSU_SSSR:16, r0l ROM:00008A7A bld #3, r0l ROM:00008A7C bcc loc_8A76:8 ROM:00008A7E bset #1, @IO_PDR1:8 ROM:00008A82 mov.b #0xC0, r0h ; '+' ROM:00008A84 bra loc_8A96:8 ROM:00008A86 ; --------------------------------------------------------------------------- ROM:00008A86 ROM:00008A86 loc_8A86: ; CODE XREF: someDisaplyNonsense+56j ROM:00008A86 ; someDisaplyNonsense+62j ROM:00008A86 mov.b @SSU_SSSR:16, r0l ROM:00008A8A bld #2, r0l ROM:00008A8C bcc loc_8A86:8 ROM:00008A8E mov.b #1, r0l ROM:00008A90 mov.b r0l, @SSU_SSTDR:16 ROM:00008A94 dec.b r0h ROM:00008A96 ROM:00008A96 loc_8A96: ; CODE XREF: someDisaplyNonsense+4Ej ROM:00008A96 mov.b r0h, r0h ROM:00008A98 bne loc_8A86:8 ROM:00008A9A ROM:00008A9A loc_8A9A: ; CODE XREF: someDisaplyNonsense+6Aj ROM:00008A9A mov.b @SSU_SSSR:16, r0l ROM:00008A9E bld #3, r0l ROM:00008AA0 bcc loc_8A9A:8 ROM:00008AA2 ROM:00008AA2 loc_8AA2: ; CODE XREF: someDisaplyNonsense+72j ROM:00008AA2 mov.b @SSU_SSSR:16, r0l ROM:00008AA6 bld #3, r0l ROM:00008AA8 bcc loc_8AA2:8 ROM:00008AAA bset #0, @IO_PDR1:8 ROM:00008AAE rts ROM:00008AAE ; End of function someDisaplyNonsense ROM:00008AAE ROM:00008AB0 ; --------------------------------------------------------------------------- ROM:00008AB0 ; START OF FUNCTION CHUNK FOR drawNumberAndWattsymbolOnscreen ROM:00008AB0 ROM:00008AB0 common_epilogue_4: ; CODE XREF: drawNumberAndWattsymbolOnscreen+7Ej ROM:00008AB0 ; lcdFillRectangle+15Cj ROM:00008AB0 pop.l er6 ROM:00008AB4 pop.l er5 ROM:00008AB8 pop.w r4 ROM:00008ABA rts ROM:00008ABA ; END OF FUNCTION CHUNK FOR drawNumberAndWattsymbolOnscreen ROM:00008ABC ; --------------------------------------------------------------------------- ROM:00008ABC ; START OF FUNCTION CHUNK FOR logEvent ROM:00008ABC ROM:00008ABC common_epilogue_3: ; CODE XREF: logEvent+248j ROM:00008ABC ; drawImageInSomeWeirdWay+29Cj ROM:00008ABC pop.l tmpLogEntryBuf_ ROM:00008AC0 pop.l RouteInfo_ ROM:00008AC4 pop.w curEntryPtr ROM:00008AC6 pop.w r3 ROM:00008AC8 rts ROM:00008AC8 ; END OF FUNCTION CHUNK FOR logEvent ROM:00008ACA ROM:00008ACA ; =============== S U B R O U T I N E ======================================= ROM:00008ACA ROM:00008ACA ; (u16 inventory[2]) ROM:00008ACA ; ROM:00008ACA ; word[0]: ROM:00008ACA ; 0x0001 - poke has joined empty walker on walk ROM:00008ACA ; 0x0002 - have caught poke slot #1 full or have event item (XXX :seems wrong but is right) ROM:00008ACA ; 0x0004 - have caught poke slot #2 full ROM:00008ACA ; 0x0008 - have caught poke slot #3 full ROM:00008ACA ; 0x0010 - have event poke slot full ROM:00008ACA ; 0x0020 - haven "special map" slot full ROM:00008ACA ; 0x0040 - have dowsed item slot #1 full ROM:00008ACA ; 0x0080 - have dowsed item slot #2 full ROM:00008ACA ; 0x0100 - have dowsed item slot #3 full ROM:00008ACA ; ROM:00008ACA ; word[1] ROM:00008ACA ; one bit per giften item slot. 10 total ROM:00008ACA ; ROM:00008ACA ; ROM:00008ACA ; ROM:00008ACA ROM:00008ACA takeItemAndPokeInventory: ; CODE XREF: interactionHAndlerMainMenu+118p ROM:00008ACA caughtPokes = r3 ROM:00008ACA gottenItems = r4 ROM:00008ACA posessionsFlagsP = r5 ROM:00008ACA posessionsFlagsP_ = er5 ROM:00008ACA mov.w r0, posessionsFlagsP ROM:00008ACC jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00008AD0 mov.w #0x30, r0 ; '0' ROM:00008AD4 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00008AD8 mov.w r0, caughtPokes ROM:00008ADA mov.w #0x34, r0 ; '4' ROM:00008ADE jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00008AE2 mov.w r0, gottenItems ROM:00008AE4 sub.b r2l, r2l ROM:00008AE6 sub.w e0, e0 ROM:00008AE8 ROM:00008AE8 loc_8AE8: ; CODE XREF: takeItemAndPokeInventory+2Cj ROM:00008AE8 extu.w r2 ROM:00008AEA mov.w r2, r0 ROM:00008AEC shll.w r0 ROM:00008AEE add.w posessionsFlagsP, r0 ; clear two words there ROM:00008AF0 mov.w e0, @er0 ROM:00008AF2 inc.b r2l ROM:00008AF4 cmp.b #2, r2l ROM:00008AF6 bcs loc_8AE8:8 ROM:00008AF8 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00008AF8 ; 0x04 - have walking poke ROM:00008AFC bld #2, r0l ROM:00008AFE bcc loc_8B06:8 ROM:00008B00 mov.w @posessionsFlagsP_, r0 ROM:00008B02 bset #0, r0l ROM:00008B04 mov.w r0, @posessionsFlagsP_ ROM:00008B06 ROM:00008B06 loc_8B06: ; CODE XREF: takeItemAndPokeInventory+34j ROM:00008B06 mov.w #0xCE8C, r0 ; 3x pokes caught this walk (wild poke struct copy) ROM:00008B0A mov.w #0x30, r1 ; '0' ROM:00008B0E mov.w caughtPokes, e0 ROM:00008B10 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008B14 mov.w #0xCEBC, r0 ; 3x items gotten during this walk + 10 gifted ROM:00008B18 mov.w #0x34, r1 ; '4' ROM:00008B1C mov.w gottenItems, e0 ROM:00008B1E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008B22 sub.b r2l, r2l ROM:00008B24 ROM:00008B24 loc_8B24: ; CODE XREF: takeItemAndPokeInventory+82j ROM:00008B24 extu.w r2 ROM:00008B26 mov.w r2, r0 ROM:00008B28 mov.w #0x10, e0 ROM:00008B2C mulxu.w e0, er0 ROM:00008B2E add.w caughtPokes, r0 ROM:00008B30 mov.w @er0, e0 ROM:00008B32 beq loc_8B48:8 ROM:00008B34 ROM:00008B34 poke_slot_nonempty: ROM:00008B34 mov.w #2, r0 ROM:00008B38 mov.b r2l, r1l ROM:00008B3A ROM:00008B3A loc_8B3A: ; CODE XREF: takeItemAndPokeInventory+76j ROM:00008B3A dec.b r1l ROM:00008B3C bmi loc_8B42:8 ROM:00008B3E shll.w r0 ; 2 << slotNo ROM:00008B40 bra loc_8B3A:8 ROM:00008B42 ; --------------------------------------------------------------------------- ROM:00008B42 ROM:00008B42 loc_8B42: ; CODE XREF: takeItemAndPokeInventory+72j ROM:00008B42 mov.w @posessionsFlagsP_, e0 ROM:00008B44 or.w r0, e0 ROM:00008B46 mov.w e0, @posessionsFlagsP_ ROM:00008B48 ROM:00008B48 loc_8B48: ; CODE XREF: takeItemAndPokeInventory+68j ROM:00008B48 inc.b r2l ROM:00008B4A cmp.b #3, r2l ROM:00008B4C bcs loc_8B24:8 ROM:00008B4E sub.b r2l, r2l ROM:00008B50 ROM:00008B50 loc_8B50: ; CODE XREF: takeItemAndPokeInventory+ACj ROM:00008B50 extu.w r2 ROM:00008B52 mov.w r2, r0 ROM:00008B54 shll.w r0 ROM:00008B56 shll.w r0 ROM:00008B58 add.w gottenItems, r0 ROM:00008B5A mov.w @er0, e0 ROM:00008B5C beq loc_8B72:8 ROM:00008B5E ROM:00008B5E item_slot_nonempty: ROM:00008B5E mov.w #0x40, r0 ; '@' ROM:00008B62 mov.b r2l, r1l ROM:00008B64 ROM:00008B64 loc_8B64: ; CODE XREF: takeItemAndPokeInventory+A0j ROM:00008B64 dec.b r1l ROM:00008B66 bmi loc_8B6C:8 ; 0x40 << itemSlotNo ROM:00008B68 shll.w r0 ROM:00008B6A bra loc_8B64:8 ROM:00008B6C ; --------------------------------------------------------------------------- ROM:00008B6C ROM:00008B6C loc_8B6C: ; CODE XREF: takeItemAndPokeInventory+9Cj ROM:00008B6C mov.w @posessionsFlagsP_, e0 ROM:00008B6E or.w r0, e0 ROM:00008B70 mov.w e0, @posessionsFlagsP_ ROM:00008B72 ROM:00008B72 loc_8B72: ; CODE XREF: takeItemAndPokeInventory+92j ROM:00008B72 inc.b r2l ROM:00008B74 cmp.b #3, r2l ROM:00008B76 bcs loc_8B50:8 ROM:00008B78 add.w #0xC, gottenItems ROM:00008B7C sub.b r2l, r2l ROM:00008B7E ROM:00008B7E loc_8B7E: ; CODE XREF: takeItemAndPokeInventory+DEj ROM:00008B7E extu.w r2 ROM:00008B80 mov.w r2, r0 ROM:00008B82 shll.w r0 ROM:00008B84 shll.w r0 ROM:00008B86 add.w gottenItems, r0 ROM:00008B88 mov.w @er0, e0 ROM:00008B8A beq loc_8BA4:8 ROM:00008B8C ROM:00008B8C gifted_item_slot_nonempty: ROM:00008B8C mov.w #1, r0 ROM:00008B90 mov.b r2l, r1l ROM:00008B92 ROM:00008B92 loc_8B92: ; CODE XREF: takeItemAndPokeInventory+CEj ROM:00008B92 dec.b r1l ; 1 << idx ROM:00008B94 bmi loc_8B9A:8 ROM:00008B96 shll.w r0 ROM:00008B98 bra loc_8B92:8 ROM:00008B9A ; --------------------------------------------------------------------------- ROM:00008B9A ROM:00008B9A loc_8B9A: ; CODE XREF: takeItemAndPokeInventory+CAj ROM:00008B9A mov.w @(2:16,posessionsFlagsP_), e0 ROM:00008B9E or.w r0, e0 ROM:00008BA0 mov.w e0, @(2:16,posessionsFlagsP_) ROM:00008BA4 ROM:00008BA4 loc_8BA4: ; CODE XREF: takeItemAndPokeInventory+C0j ROM:00008BA4 inc.b r2l ROM:00008BA6 cmp.b #0xA, r2l ROM:00008BA8 bcs loc_8B7E:8 ROM:00008BAA mov.w #0xB800, r0 ROM:00008BAE jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00008BB2 mov.b r0l, r2l ROM:00008BB4 btst #5, r0l ROM:00008BB6 beq loc_8BBE:8 ROM:00008BB8 ROM:00008BB8 have_event_poke: ROM:00008BB8 mov.w @posessionsFlagsP_, r1 ROM:00008BBA bset #4, r1l ROM:00008BBC mov.w r1, @posessionsFlagsP_ ROM:00008BBE ROM:00008BBE loc_8BBE: ; CODE XREF: takeItemAndPokeInventory+ECj ROM:00008BBE btst #4, r2l ROM:00008BC0 beq loc_8BC8:8 ROM:00008BC2 ROM:00008BC2 have_event_special_map: ROM:00008BC2 mov.w @posessionsFlagsP_, r0 ROM:00008BC4 bset #5, r0l ROM:00008BC6 mov.w r0, @posessionsFlagsP_ ROM:00008BC8 ROM:00008BC8 loc_8BC8: ; CODE XREF: takeItemAndPokeInventory+F6j ROM:00008BC8 btst #6, r2l ROM:00008BCA beq locret_8BD0:8 ROM:00008BCC ROM:00008BCC haveEventItem: ROM:00008BCC bset #1, @posessionsFlagsP_ ROM:00008BD0 ROM:00008BD0 locret_8BD0: ; CODE XREF: takeItemAndPokeInventory+100j ROM:00008BD0 rts ROM:00008BD0 ; End of function takeItemAndPokeInventory ROM:00008BD0 ROM:00008BD2 ROM:00008BD2 ; =============== S U B R O U T I N E ======================================= ROM:00008BD2 ROM:00008BD2 ROM:00008BD2 sub_8BD2: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+36p ROM:00008BD2 ; interactionHandlerGiftedItemsScreen+48p ROM:00008BD2 mov.w r0, e1 ROM:00008BD4 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00008BD4 ; gifted items view: this is item number that has focus and arrow ROM:00008BD4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008BD4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008BD4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008BD8 cmp.b #9, r1l ROM:00008BDA beq loc_8BFE:8 ROM:00008BDC inc.b r1l ROM:00008BDE sub.b r1h, r1h ROM:00008BE0 bra loc_8C06:8 ROM:00008BE2 ; --------------------------------------------------------------------------- ROM:00008BE2 ROM:00008BE2 loc_8BE2: ; CODE XREF: sub_8BD2+36j ROM:00008BE2 mov.b r1l, r0l ROM:00008BE4 mov.w #1, e0 ROM:00008BE8 ROM:00008BE8 loc_8BE8: ; CODE XREF: sub_8BD2+1Cj ROM:00008BE8 dec.b r0l ROM:00008BEA bmi loc_8BF0:8 ROM:00008BEC shll.w e0 ROM:00008BEE bra loc_8BE8:8 ROM:00008BF0 ; --------------------------------------------------------------------------- ROM:00008BF0 ROM:00008BF0 loc_8BF0: ; CODE XREF: sub_8BD2+18j ROM:00008BF0 and.w e1, e0 ROM:00008BF2 beq loc_8BFA:8 ROM:00008BF4 mov.b r1l, @gCurSubstateY:16 ; Substate: ROM:00008BF4 ; gifted items view: this is item number that has focus and arrow ROM:00008BF4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008BF4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008BF4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008BF8 bra loc_8C0A:8 ROM:00008BFA ; --------------------------------------------------------------------------- ROM:00008BFA ROM:00008BFA loc_8BFA: ; CODE XREF: sub_8BD2+20j ROM:00008BFA cmp.b #9, r1l ROM:00008BFC bne loc_8C02:8 ROM:00008BFE ROM:00008BFE loc_8BFE: ; CODE XREF: sub_8BD2+8j ROM:00008BFE mov.b #1, r0l ROM:00008C00 bra locret_8C0C:8 ROM:00008C02 ; --------------------------------------------------------------------------- ROM:00008C02 ROM:00008C02 loc_8C02: ; CODE XREF: sub_8BD2+2Aj ROM:00008C02 inc.b r1l ROM:00008C04 inc.b r1h ROM:00008C06 ROM:00008C06 loc_8C06: ; CODE XREF: sub_8BD2+Ej ROM:00008C06 cmp.b #0xA, r1h ROM:00008C08 bcs loc_8BE2:8 ROM:00008C0A ROM:00008C0A loc_8C0A: ; CODE XREF: sub_8BD2+26j ROM:00008C0A sub.b r0l, r0l ROM:00008C0C ROM:00008C0C locret_8C0C: ; CODE XREF: sub_8BD2+2Ej ROM:00008C0C rts ROM:00008C0C ; End of function sub_8BD2 ROM:00008C0C ROM:00008C0E ; --------------------------------------------------------------------------- ROM:00008C0E ; START OF FUNCTION CHUNK FOR sub_9108 ROM:00008C0E ROM:00008C0E loc_8C0E: ; CODE XREF: sub_8CF4+Aj ROM:00008C0E ; sub_9108+Aj ROM:00008C0E push.w e6 ROM:00008C10 push.w r5 ROM:00008C12 mov.w #0xA, e6 ROM:00008C16 mov.w r0, r5 ROM:00008C18 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00008C18 ; gifted items view: this is item number that has focus and arrow ROM:00008C18 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C18 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C18 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C1C extu.w r1 ROM:00008C1E inc.w #1, r1 ROM:00008C20 exts.l er1 ROM:00008C22 divxs.w e6, er1 ROM:00008C26 mov.w e1, r1 ROM:00008C28 mov.b r1l, @gCurSubstateY:16 ; Substate: ROM:00008C28 ; gifted items view: this is item number that has focus and arrow ROM:00008C28 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C28 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C28 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C2C sub.b r1l, r1l ROM:00008C2E ROM:00008C2E loc_8C2E: ; CODE XREF: sub_9108-4AEj ROM:00008C2E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008C2E ; gifted items view: this is item number that has focus and arrow ROM:00008C2E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C2E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C2E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C32 mov.w #1, e0 ROM:00008C36 ROM:00008C36 loc_8C36: ; CODE XREF: sub_9108-4CCj ROM:00008C36 dec.b r0l ROM:00008C38 bmi loc_8C3E:8 ROM:00008C3A shll.w e0 ROM:00008C3C bra loc_8C36:8 ROM:00008C3E ; --------------------------------------------------------------------------- ROM:00008C3E ROM:00008C3E loc_8C3E: ; CODE XREF: sub_9108-4D0j ROM:00008C3E and.w r5, e0 ROM:00008C40 bne loc_8C5C:8 ROM:00008C42 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008C42 ; gifted items view: this is item number that has focus and arrow ROM:00008C42 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C42 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C42 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C46 extu.w r0 ROM:00008C48 inc.w #1, r0 ROM:00008C4A exts.l er0 ROM:00008C4C divxs.w e6, er0 ROM:00008C50 mov.w e0, r0 ROM:00008C52 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00008C52 ; gifted items view: this is item number that has focus and arrow ROM:00008C52 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C52 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C52 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C56 inc.b r1l ROM:00008C58 cmp.b #0xA, r1l ROM:00008C5A bcs loc_8C2E:8 ROM:00008C5C ROM:00008C5C loc_8C5C: ; CODE XREF: sub_9108-4C8j ROM:00008C5C pop.w r5 ROM:00008C5E pop.w e6 ROM:00008C60 rts ROM:00008C60 ; END OF FUNCTION CHUNK FOR sub_9108 ROM:00008C62 ROM:00008C62 ; =============== S U B R O U T I N E ======================================= ROM:00008C62 ROM:00008C62 ROM:00008C62 sub_8C62: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+Ep ROM:00008C62 ; interactionHandlerGiftedItemsScreen+Ep ROM:00008C62 mov.w r0, e1 ROM:00008C64 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00008C64 ; gifted items view: this is item number that has focus and arrow ROM:00008C64 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C64 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C64 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C68 beq return_true:8 ROM:00008C6A mov.b r1l, r0l ROM:00008C6C dec.b r0l ROM:00008C6E mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00008C6E ; gifted items view: this is item number that has focus and arrow ROM:00008C6E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C6E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C6E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C72 sub.b r1l, r1l ROM:00008C74 bra loc_8C9C:8 ROM:00008C76 ; --------------------------------------------------------------------------- ROM:00008C76 ROM:00008C76 loc_8C76: ; CODE XREF: sub_8C62+3Cj ROM:00008C76 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008C76 ; gifted items view: this is item number that has focus and arrow ROM:00008C76 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C76 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C76 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C7A mov.w #1, e0 ROM:00008C7E ROM:00008C7E loc_8C7E: ; CODE XREF: sub_8C62+22j ROM:00008C7E dec.b r0l ROM:00008C80 bmi loc_8C86:8 ROM:00008C82 shll.w e0 ; e0 = 1 << gCurSubstateY ROM:00008C84 bra loc_8C7E:8 ROM:00008C86 ; --------------------------------------------------------------------------- ROM:00008C86 ROM:00008C86 loc_8C86: ; CODE XREF: sub_8C62+1Ej ROM:00008C86 and.w e1, e0 ROM:00008C88 bne return_false:8 ROM:00008C8A mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008C8A ; gifted items view: this is item number that has focus and arrow ROM:00008C8A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C8A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C8A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C8E bne loc_8C94:8 ROM:00008C90 ROM:00008C90 return_true: ; CODE XREF: sub_8C62+6j ROM:00008C90 mov.b #1, r0l ROM:00008C92 bra locret_8CA2:8 ROM:00008C94 ; --------------------------------------------------------------------------- ROM:00008C94 ROM:00008C94 loc_8C94: ; CODE XREF: sub_8C62+2Cj ROM:00008C94 dec.b r0l ROM:00008C96 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00008C96 ; gifted items view: this is item number that has focus and arrow ROM:00008C96 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008C96 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008C96 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008C9A inc.b r1l ROM:00008C9C ROM:00008C9C loc_8C9C: ; CODE XREF: sub_8C62+12j ROM:00008C9C cmp.b #0xA, r1l ROM:00008C9E bcs loc_8C76:8 ROM:00008CA0 ROM:00008CA0 return_false: ; CODE XREF: sub_8C62+26j ROM:00008CA0 sub.b r0l, r0l ROM:00008CA2 ROM:00008CA2 locret_8CA2: ; CODE XREF: sub_8C62+30j ROM:00008CA2 rts ROM:00008CA2 ; End of function sub_8C62 ROM:00008CA2 ROM:00008CA4 ROM:00008CA4 ; =============== S U B R O U T I N E ======================================= ROM:00008CA4 ROM:00008CA4 ROM:00008CA4 sub_8CA4: ; CODE XREF: interactionHandlerGiftedItemsScreen+26p ROM:00008CA4 mov.w #0xA, e6 ROM:00008CA8 mov.w r0, r5 ROM:00008CAA mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00008CAA ; gifted items view: this is item number that has focus and arrow ROM:00008CAA ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CAA ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CAA ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CAE extu.w r1 ROM:00008CB0 add.w #9, r1 ROM:00008CB4 exts.l er1 ROM:00008CB6 divxs.w e6, er1 ROM:00008CBA mov.w e1, r1 ROM:00008CBC mov.b r1l, @gCurSubstateY:16 ; Substate: ROM:00008CBC ; gifted items view: this is item number that has focus and arrow ROM:00008CBC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CBC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CBC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CC0 sub.b r1l, r1l ROM:00008CC2 ROM:00008CC2 loc_8CC2: ; CODE XREF: sub_8CA4+4Cj ROM:00008CC2 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008CC2 ; gifted items view: this is item number that has focus and arrow ROM:00008CC2 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CC2 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CC2 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CC6 mov.w #1, e0 ROM:00008CCA ROM:00008CCA loc_8CCA: ; CODE XREF: sub_8CA4+2Cj ROM:00008CCA dec.b r0l ROM:00008CCC bmi loc_8CD2:8 ROM:00008CCE shll.w e0 ROM:00008CD0 bra loc_8CCA:8 ROM:00008CD2 ; --------------------------------------------------------------------------- ROM:00008CD2 ROM:00008CD2 loc_8CD2: ; CODE XREF: sub_8CA4+28j ROM:00008CD2 and.w r5, e0 ROM:00008CD4 bne locret_8CF2:8 ROM:00008CD6 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008CD6 ; gifted items view: this is item number that has focus and arrow ROM:00008CD6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CD6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CD6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CDA extu.w r0 ROM:00008CDC add.w #9, r0 ROM:00008CE0 exts.l er0 ROM:00008CE2 divxs.w e6, er0 ROM:00008CE6 mov.w e0, r0 ROM:00008CE8 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00008CE8 ; gifted items view: this is item number that has focus and arrow ROM:00008CE8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CE8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CE8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CEC inc.b r1l ROM:00008CEE cmp.b #0xA, r1l ROM:00008CF0 bcs loc_8CC2:8 ROM:00008CF2 ROM:00008CF2 locret_8CF2: ; CODE XREF: sub_8CA4+30j ROM:00008CF2 rts ROM:00008CF2 ; End of function sub_8CA4 ROM:00008CF2 ROM:00008CF4 ROM:00008CF4 ; =============== S U B R O U T I N E ======================================= ROM:00008CF4 ROM:00008CF4 ROM:00008CF4 sub_8CF4: ; CODE XREF: interactionHAndlerMainMenu+12Cp ROM:00008CF4 mov.b #9, r0l ROM:00008CF6 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00008CF6 ; gifted items view: this is item number that has focus and arrow ROM:00008CF6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008CF6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008CF6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008CFA mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:00008CFA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00008CFA ; ItemScreenHandler: ROM:00008CFA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00008CFA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00008CFA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00008CFA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00008CFA ; 0x0010 - light grey pokeball ROM:00008CFA ; 0x0020 - tiny map icon ROM:00008CFA ; 0x0040 - found item #0 (slot nonempty) ROM:00008CFA ; 0x0080 - found item #1 (slot nonempty) ROM:00008CFA ; 0x0100 - found item #2 (slot nonempty) ROM:00008CFA ; 0x0200 - grey item icon ROM:00008CFA ; ItemRXed - what was RXed ROM:00008CFA ; 0 - event pokemon ROM:00008CFA ; 1 - special route ROM:00008CFA ; 2 - item ROM:00008CFA ; 3 - special ROM:00008CFA ; 4 - stamp: heart ROM:00008CFA ; 5 - stamp: spade ROM:00008CFA ; 6 - stamp: diamond ROM:00008CFA ; 7 - stamp: club ROM:00008CFA ; switch: ROM:00008CFA ; zero - pokemon does ROM:00008CFA ; nonzero - item needs to be switched ROM:00008CFA ; item RXed: ROM:00008CFA ; what sort of thing was RXed: item, map, route, etc ROM:00008CFE jmp loc_8C0E:24 ROM:00008CFE ; End of function sub_8CF4 ROM:00008CFE ROM:00008D02 ROM:00008D02 ; =============== S U B R O U T I N E ======================================= ROM:00008D02 ROM:00008D02 ROM:00008D02 interactionHandlerPokemonAndItemsScreen: ROM:00008D02 ; CODE XREF: interactionHandler:case_0x0ap ROM:00008D02 mov.b #4, r0l ROM:00008D04 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00008D04 ; // 0x02 - enter ROM:00008D04 ; // 0x04 - left ROM:00008D04 ; // 0x08 - right ROM:00008D08 mov.b r0l, r0l ROM:00008D0A beq loc_8D2A:8 ROM:00008D0C mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:00008D0C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00008D0C ; ItemScreenHandler: ROM:00008D0C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00008D0C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00008D0C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00008D0C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00008D0C ; 0x0010 - light grey pokeball ROM:00008D0C ; 0x0020 - tiny map icon ROM:00008D0C ; 0x0040 - found item #0 (slot nonempty) ROM:00008D0C ; 0x0080 - found item #1 (slot nonempty) ROM:00008D0C ; 0x0100 - found item #2 (slot nonempty) ROM:00008D0C ; 0x0200 - grey item icon ROM:00008D0C ; ItemRXed - what was RXed ROM:00008D0C ; 0 - event pokemon ROM:00008D0C ; 1 - special route ROM:00008D0C ; 2 - item ROM:00008D0C ; 3 - special ROM:00008D0C ; 4 - stamp: heart ROM:00008D0C ; 5 - stamp: spade ROM:00008D0C ; 6 - stamp: diamond ROM:00008D0C ; 7 - stamp: club ROM:00008D0C ; switch: ROM:00008D0C ; zero - pokemon does ROM:00008D0C ; nonzero - item needs to be switched ROM:00008D0C ; item RXed: ROM:00008D0C ; what sort of thing was RXed: item, map, route, etc ROM:00008D10 jsr sub_8C62:24 ROM:00008D14 mov.b r0l, r0l ROM:00008D16 beq loc_8D24:8 ROM:00008D18 jsr clear_gCurSubstateY:24 ROM:00008D1C mov.b #1, r0l ROM:00008D1E jsr setCurrentlyActiveView:24 ROM:00008D22 bra loc_8D54:8 ROM:00008D24 ; --------------------------------------------------------------------------- ROM:00008D24 ROM:00008D24 loc_8D24: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+14j ROM:00008D24 mov.b #2, r0l ROM:00008D26 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00008D2A ROM:00008D2A loc_8D2A: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+8j ROM:00008D2A mov.b #8, r0l ROM:00008D2C jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00008D2C ; // 0x02 - enter ROM:00008D2C ; // 0x04 - left ROM:00008D2C ; // 0x08 - right ROM:00008D30 mov.b r0l, r0l ROM:00008D32 beq loc_8D5E:8 ROM:00008D34 mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:00008D34 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00008D34 ; ItemScreenHandler: ROM:00008D34 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00008D34 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00008D34 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00008D34 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00008D34 ; 0x0010 - light grey pokeball ROM:00008D34 ; 0x0020 - tiny map icon ROM:00008D34 ; 0x0040 - found item #0 (slot nonempty) ROM:00008D34 ; 0x0080 - found item #1 (slot nonempty) ROM:00008D34 ; 0x0100 - found item #2 (slot nonempty) ROM:00008D34 ; 0x0200 - grey item icon ROM:00008D34 ; ItemRXed - what was RXed ROM:00008D34 ; 0 - event pokemon ROM:00008D34 ; 1 - special route ROM:00008D34 ; 2 - item ROM:00008D34 ; 3 - special ROM:00008D34 ; 4 - stamp: heart ROM:00008D34 ; 5 - stamp: spade ROM:00008D34 ; 6 - stamp: diamond ROM:00008D34 ; 7 - stamp: club ROM:00008D34 ; switch: ROM:00008D34 ; zero - pokemon does ROM:00008D34 ; nonzero - item needs to be switched ROM:00008D34 ; item RXed: ROM:00008D34 ; what sort of thing was RXed: item, map, route, etc ROM:00008D38 jsr sub_8BD2:24 ROM:00008D3C mov.b r0l, r0l ROM:00008D3E beq loc_8D58:8 ROM:00008D40 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00008D40 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00008D44 beq loc_8D54:8 ROM:00008D46 jsr sub_9108:24 ROM:00008D4A mov.b #0xB, r0l ROM:00008D4C jsr setCurrentlyActiveView:24 ROM:00008D50 mov.b #2, r0l ROM:00008D52 bra loc_8D82:8 ROM:00008D54 ; --------------------------------------------------------------------------- ROM:00008D54 ROM:00008D54 loc_8D54: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+20j ROM:00008D54 ; interactionHandlerPokemonAndItemsScreen+42j ROM:00008D54 mov.b #1, r0l ROM:00008D56 bra loc_8D82:8 ROM:00008D58 ; --------------------------------------------------------------------------- ROM:00008D58 ROM:00008D58 loc_8D58: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+3Cj ROM:00008D58 mov.b #2, r0l ROM:00008D5A jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00008D5E ROM:00008D5E loc_8D5E: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+30j ROM:00008D5E mov.b #2, r0l ROM:00008D60 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00008D60 ; // 0x02 - enter ROM:00008D60 ; // 0x04 - left ROM:00008D60 ; // 0x08 - right ROM:00008D64 mov.b r0l, r0l ROM:00008D66 beq locret_8D86:8 ROM:00008D68 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00008D68 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00008D6C beq loc_8D76:8 ROM:00008D6E jsr sub_9108:24 ROM:00008D72 mov.b #0xB, r0l ROM:00008D74 bra loc_8D7C:8 ROM:00008D76 ; --------------------------------------------------------------------------- ROM:00008D76 ROM:00008D76 loc_8D76: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+6Aj ROM:00008D76 jsr someStateVarShuffling:24 ROM:00008D7A sub.b r0l, r0l ROM:00008D7C ROM:00008D7C loc_8D7C: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+72j ROM:00008D7C jsr setCurrentlyActiveView:24 ROM:00008D80 sub.b r0l, r0l ROM:00008D82 ROM:00008D82 loc_8D82: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+50j ROM:00008D82 ; interactionHandlerPokemonAndItemsScreen+54j ROM:00008D82 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00008D86 ROM:00008D86 locret_8D86: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+64j ROM:00008D86 rts ROM:00008D86 ; End of function interactionHandlerPokemonAndItemsScreen ROM:00008D86 ROM:00008D88 ROM:00008D88 ; =============== S U B R O U T I N E ======================================= ROM:00008D88 ROM:00008D88 ROM:00008D88 drawPokemonAndItemsScreen: ; CODE XREF: maybe_viewDoDisplay:case__0x0ap ROM:00008D88 val_0x280 = r5 ROM:00008D88 subs #4, sp ROM:00008D8A mov.l #0x100280, er5 ROM:00008D90 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00008D94 mov.w #0x180, r0 ROM:00008D98 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00008D9C mov.w r0, r6 ROM:00008D9E mov.w #0xB90, r4 ROM:00008DA2 add.w val_0x280, r4 ; 0x0E10 = "POKeMON & ITEMS" menu heading in box 80x16 ROM:00008DA4 mov.w r0, e0 ROM:00008DA6 mov.w r4, r0 ROM:00008DA8 mov.w #0x140, r1 ROM:00008DAC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008DB0 mov.w r6, e0 ROM:00008DB2 mov.w #0x1050, r1 ROM:00008DB6 mov.w #8, r0 ROM:00008DBA jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008DBE mov.b @gCurSubstateY:16, r4l ; Substate: ROM:00008DBE ; gifted items view: this is item number that has focus and arrow ROM:00008DBE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008DBE ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008DBE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008DC2 mov.b r4l, r0l ROM:00008DC4 cmp.b #9, r0l ROM:00008DC6 bhi loc_8F4E:16 ROM:00008DCA extu.w r0 ROM:00008DCC add.w r0, r0 ROM:00008DCE mov.w @(JUMPTABLE_8DCE,er0), r0 ROM:00008DD2 jmp @er0 ROM:00008DD4 ; --------------------------------------------------------------------------- ROM:00008DD4 ROM:00008DD4 case___0: ; DATA XREF: ROM:JUMPTABLE_8DCEo ROM:00008DD4 mov.w #0x183C, r0 ROM:00008DD8 jsr drawCurPokemonSmallAnimatedFrame:24 ; (r0l = x, r0h = y) ROM:00008DDC mov.b #7, r1l ROM:00008DDE mov.w #0x3000, r0 ROM:00008DE2 jsr drawCurPokemonNameWithBorders:24 ; (r0l = x, r0h = y, r0l = imgHeight) ROM:00008DE6 jmp loc_8F4E:24 ROM:00008DEA ; --------------------------------------------------------------------------- ROM:00008DEA ROM:00008DEA case___1_2_3: ; DATA XREF: ROM:0000BEE6o ROM:00008DEA ; ROM:0000BEE8o ... ROM:00008DEA add.b #0xFF, r4l ROM:00008DEC cmp.b #2, r4l ROM:00008DEE bls loc_8DF2:8 ROM:00008DF0 sub.b r4l, r4l ROM:00008DF2 ROM:00008DF2 loc_8DF2: ; CODE XREF: drawPokemonAndItemsScreen+66j ROM:00008DF2 mov.w #0x8F52, r0 ROM:00008DF6 mov.w #0x30, r1 ; '0' ROM:00008DFA mov.w r6, e0 ROM:00008DFC jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008E00 mov.w r6, r0 ROM:00008E02 add.w #0x30, r0 ; '0' ROM:00008E06 mov.w r0, e0 ROM:00008E08 mov.b r4l, r1l ROM:00008E0A extu.w r1 ROM:00008E0C mov.w #0x10, e1 ROM:00008E10 mulxu.w e1, er1 ROM:00008E12 mov.w #0xCE8C, r0 ROM:00008E16 add.w r1, r0 ROM:00008E18 mov.w e5, r1 ROM:00008E1A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008E1E sub.w e6, e6 ROM:00008E20 ROM:00008E20 loc_8E20: ; CODE XREF: drawPokemonAndItemsScreen+CCj ROM:00008E20 mov.w e6, r0 ROM:00008E22 mov.w #0x10, e0 ROM:00008E26 mulxu.w e0, er0 ROM:00008E28 add.w r6, r0 ROM:00008E2A mov.w @(0x30:16,er6), e0 ROM:00008E2E mov.w @er0, r0 ROM:00008E30 cmp.w r0, e0 ROM:00008E32 bne loc_8E4E:8 ROM:00008E34 mov.w e6, r1 ROM:00008E36 mov.w #0x183C, r0 ROM:00008E3A jsr drawRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx) ROM:00008E3E mov.w e6, r1 ROM:00008E40 mov.b #7, r1h ROM:00008E42 mov.w #0x3000, r0 ROM:00008E46 jsr drawNameOfRouteAvailablePokemon:24 ; (r0l = x, r0h = y, r1l = availablePokemonIdx, r1h = pokemonNameBorderFlags) ROM:00008E46 ; ROM:00008E46 ; //draws onscreen th ename of a pokemon available on this route at index r1l ROM:00008E4A jmp loc_8F4E:24 ROM:00008E4E ; --------------------------------------------------------------------------- ROM:00008E4E ROM:00008E4E loc_8E4E: ; CODE XREF: drawPokemonAndItemsScreen+AAj ROM:00008E4E inc.w #1, e6 ROM:00008E50 cmp.w #3, e6 ROM:00008E54 blt loc_8E20:8 ROM:00008E56 jmp loc_8F4E:24 ROM:00008E5A ; --------------------------------------------------------------------------- ROM:00008E5A ROM:00008E5A case___4: ; DATA XREF: ROM:0000BEECo ROM:00008E5A mov.b @curUiFlags:16, r0l ; bits: ROM:00008E5A ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00008E5A ; 0x02 - slower animation frame ROM:00008E5E and.b #1, r0l ROM:00008E60 mov.b #0xC0, r0h ; '+' ROM:00008E62 mulxu.b r0h, r0 ROM:00008E64 add.w #0xBA80, r0 ROM:00008E68 mov.w #0x180, r1 ROM:00008E6C mov.w r6, e0 ROM:00008E6E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008E72 mov.w r6, e0 ROM:00008E74 mov.w #0x1820, r1 ROM:00008E78 mov.w #0x183C, r0 ROM:00008E7C jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008E80 mov.b #7, r1l ROM:00008E82 mov.w #0x3000, r0 ROM:00008E86 jsr showEventPokeNameAndMaybeAnimation:24 ; (r0l = x, r0h = y, r1l = borderBits) ROM:00008E8A jmp loc_8F4E:24 ROM:00008E8E ; --------------------------------------------------------------------------- ROM:00008E8E ROM:00008E8E case___5: ; DATA XREF: ROM:0000BEEEo ROM:00008E8E mov.w #0x1750, r4 ROM:00008E92 add.w val_0x280, r4 ; large map icon ROM:00008E94 mov.w r4, r0 ROM:00008E96 mov.w #0xC0, r1 ; '+' ROM:00008E9A mov.w r6, e0 ROM:00008E9C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008EA0 mov.w r6, e0 ROM:00008EA2 mov.w #0x1820, r1 ROM:00008EA6 mov.w #0x183C, r0 ROM:00008EAA jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008EAE mov.w #0xF, r1 ROM:00008EB2 mov.w #0x1130, r0 ; "Special Map" ROM:00008EB6 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00008EB6 ; ROM:00008EB6 ; //always drawn at x = 0 ROM:00008EB6 ; ROM:00008EBA jmp loc_8F4E:24 ROM:00008EBE ; --------------------------------------------------------------------------- ROM:00008EBE ROM:00008EBE case___6_7_8: ; DATA XREF: ROM:0000BEF0o ROM:00008EBE ; ROM:0000BEF2o ... ROM:00008EBE mov.w #0x183C, r0 ROM:00008EC2 jsr drawLargeItemChest:24 ; (r0l = x, r0h = y) ROM:00008EC6 mov.w r7, e0 ROM:00008EC8 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:00008EC8 ; gifted items view: this is item number that has focus and arrow ROM:00008EC8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008EC8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008EC8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008ECC extu.w r1 ROM:00008ECE sub.w #6, r1 ROM:00008ED2 shll.w r1 ROM:00008ED4 shll.w r1 ROM:00008ED6 mov.w #0xCEBC, r0 ROM:00008EDA add.w r1, r0 ROM:00008EDC mov.w #4, r1 ROM:00008EE0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008EE4 mov.w #0x14, r0 ROM:00008EE8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00008EEC mov.w r0, r4 ROM:00008EEE mov.w r0, e0 ROM:00008EF0 mov.w #0x8F8C, r0 ROM:00008EF4 mov.w #0x14, r1 ROM:00008EF8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008EFC sub.w e6, e6 ROM:00008EFE ROM:00008EFE loc_8EFE: ; CODE XREF: drawPokemonAndItemsScreen+198j ROM:00008EFE mov.w e6, r0 ROM:00008F00 shll.w r0 ROM:00008F02 add.w r4, r0 ROM:00008F04 mov.w @sp, e0 ROM:00008F06 mov.w @er0, r0 ROM:00008F08 cmp.w r0, e0 ROM:00008F0A bne loc_8F1A:8 ROM:00008F0C mov.w e6, r1 ROM:00008F0E mov.b #0xF, r1h ROM:00008F10 mov.w #0x3000, r0 ROM:00008F14 jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00008F18 bra loc_8F4E:8 ROM:00008F1A ; --------------------------------------------------------------------------- ROM:00008F1A ROM:00008F1A loc_8F1A: ; CODE XREF: drawPokemonAndItemsScreen+182j ROM:00008F1A inc.w #1, e6 ROM:00008F1C cmp.w #0xA, e6 ROM:00008F20 blt loc_8EFE:8 ROM:00008F22 bra loc_8F4E:8 ROM:00008F24 ; --------------------------------------------------------------------------- ROM:00008F24 ROM:00008F24 case___9: ; DATA XREF: ROM:0000BEF6o ROM:00008F24 mov.w #0x1690, r4 ROM:00008F28 add.w val_0x280, r4 ROM:00008F2A mov.w r4, r0 ROM:00008F2C mov.w #0xC0, r1 ; '+' ROM:00008F30 mov.w r6, e0 ROM:00008F32 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008F36 mov.w r6, e0 ROM:00008F38 mov.w #0x1820, r1 ROM:00008F3C mov.w #0x183C, r0 ROM:00008F40 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008F44 mov.b #0xF, r1l ROM:00008F46 mov.w #0x3000, r0 ROM:00008F4A jsr showRxedItemName:24 ; (r0l = imgWidth, r0h = imgHeight, r1l = flagsBits) ROM:00008F4E ROM:00008F4E loc_8F4E: ; CODE XREF: drawPokemonAndItemsScreen+3Ej ROM:00008F4E ; drawPokemonAndItemsScreen+5Ej ... ROM:00008F4E mov.b @curUiFlags:16, r4l ; bits: ROM:00008F4E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00008F4E ; 0x02 - slower animation frame ROM:00008F52 and.b #1, r4l ROM:00008F54 extu.w r4 ROM:00008F56 add.w #3, r4 ROM:00008F5A mov.w #0x10, e4 ROM:00008F5E mulxu.w e4, er4 ROM:00008F60 mov.w #0x278, r0 ROM:00008F64 add.w val_0x280, r0 ; 0x04F8 = down arrow animation 2 frames 8x8 ROM:00008F66 add.w r0, r4 ROM:00008F68 mov.w r4, r0 ROM:00008F6A mov.w e5, r1 ROM:00008F6C mov.w r6, e0 ROM:00008F6E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008F72 mov.b @gCurSubstateY:16, r4h ; Substate: ROM:00008F72 ; gifted items view: this is item number that has focus and arrow ROM:00008F72 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008F72 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008F72 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008F76 mov.b r4h, r0l ROM:00008F78 extu.w r0 ROM:00008F7A exts.l er0 ROM:00008F7C mov.w #5, r1 ROM:00008F80 divxs.w r1, er0 ROM:00008F84 mov.w e0, r0 ROM:00008F86 mov.b #8, r0h ROM:00008F88 mulxu.b r0h, r0 ROM:00008F8A add.b #0x10, r0l ROM:00008F8C mov.b r0l, r4l ROM:00008F8E mov.b r4h, r4h ROM:00008F90 bne loc_8F94:8 ROM:00008F92 add.b #-8, r4l ROM:00008F94 ROM:00008F94 loc_8F94: ; CODE XREF: drawPokemonAndItemsScreen+208j ROM:00008F94 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00008F94 ; gifted items view: this is item number that has focus and arrow ROM:00008F94 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00008F94 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00008F94 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00008F98 extu.w r0 ROM:00008F9A exts.l er0 ROM:00008F9C divxs.w r1, er0 ROM:00008FA0 mov.b #0x10, r0h ROM:00008FA2 mulxu.b r0h, r0 ROM:00008FA4 add.b #0x10, r0l ROM:00008FA6 mov.b r0l, r0h ROM:00008FA8 mov.b r4l, r0l ROM:00008FAA mov.w r6, e0 ROM:00008FAC mov.w #0x808, r1 ROM:00008FB0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008FB4 mov.w #0x358, r4 ROM:00008FB8 add.w val_0x280, r4 ROM:00008FBA mov.w r4, r0 ROM:00008FBC mov.w #0x40, r1 ; '@' ROM:00008FC0 mov.w r6, e0 ROM:00008FC2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008FC6 mov.w r6, r0 ROM:00008FC8 add.w #0x20, r0 ; ' ' ROM:00008FCC mov.w r0, e0 ROM:00008FCE mov.w #0x1008, r1 ROM:00008FD2 sub.w r0, r0 ROM:00008FD4 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008FD8 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00008FD8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00008FDC beq loc_8FEC:8 ROM:00008FDE mov.w r6, e0 ROM:00008FE0 mov.w #0x1008, r1 ROM:00008FE4 mov.w #0x58, r0 ; 'X' ROM:00008FE8 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00008FEC ROM:00008FEC loc_8FEC: ; CODE XREF: drawPokemonAndItemsScreen+254j ROM:00008FEC mov.w #0x1E0, r4 ROM:00008FF0 add.w val_0x280, r4 ; 0x0460 - pokeball 8x8 ROM:00008FF2 mov.w r4, r0 ROM:00008FF4 mov.w e5, r1 ROM:00008FF6 mov.w r6, e0 ROM:00008FF8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00008FFC mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:00008FFC ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00008FFC ; ItemScreenHandler: ROM:00008FFC ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00008FFC ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00008FFC ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00008FFC ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00008FFC ; 0x0010 - light grey pokeball ROM:00008FFC ; 0x0020 - tiny map icon ROM:00008FFC ; 0x0040 - found item #0 (slot nonempty) ROM:00008FFC ; 0x0080 - found item #1 (slot nonempty) ROM:00008FFC ; 0x0100 - found item #2 (slot nonempty) ROM:00008FFC ; 0x0200 - grey item icon ROM:00008FFC ; ItemRXed - what was RXed ROM:00008FFC ; 0 - event pokemon ROM:00008FFC ; 1 - special route ROM:00008FFC ; 2 - item ROM:00008FFC ; 3 - special ROM:00008FFC ; 4 - stamp: heart ROM:00008FFC ; 5 - stamp: spade ROM:00008FFC ; 6 - stamp: diamond ROM:00008FFC ; 7 - stamp: club ROM:00008FFC ; switch: ROM:00008FFC ; zero - pokemon does ROM:00008FFC ; nonzero - item needs to be switched ROM:00008FFC ; item RXed: ROM:00008FFC ; what sort of thing was RXed: item, map, route, etc ROM:00009000 btst #0, r0l ROM:00009002 beq loc_9012:8 ROM:00009004 mov.w r6, e0 ROM:00009006 mov.b #8, r1h ROM:00009008 mov.b r1h, r1l ROM:0000900A mov.b #0x18, r0h ROM:0000900C mov.b r1h, r0l ROM:0000900E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009012 ROM:00009012 loc_9012: ; CODE XREF: drawPokemonAndItemsScreen+27Aj ROM:00009012 sub.w e6, e6 ROM:00009014 ROM:00009014 loc_9014: ; CODE XREF: drawPokemonAndItemsScreen+2BCj ROM:00009014 mov.w #2, r0 ROM:00009018 mov.w e6, r1 ROM:0000901A ROM:0000901A loc_901A: ; CODE XREF: drawPokemonAndItemsScreen+298j ROM:0000901A dec.b r1l ROM:0000901C bmi loc_9022:8 ROM:0000901E shll.w r0 ROM:00009020 bra loc_901A:8 ROM:00009022 ; --------------------------------------------------------------------------- ROM:00009022 ROM:00009022 loc_9022: ; CODE XREF: drawPokemonAndItemsScreen+294j ROM:00009022 mov.w @gCurSubstateA:16, e0 ; Substate for various modes ROM:00009022 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009022 ; ItemScreenHandler: ROM:00009022 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009022 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009022 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009022 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009022 ; 0x0010 - light grey pokeball ROM:00009022 ; 0x0020 - tiny map icon ROM:00009022 ; 0x0040 - found item #0 (slot nonempty) ROM:00009022 ; 0x0080 - found item #1 (slot nonempty) ROM:00009022 ; 0x0100 - found item #2 (slot nonempty) ROM:00009022 ; 0x0200 - grey item icon ROM:00009022 ; ItemRXed - what was RXed ROM:00009022 ; 0 - event pokemon ROM:00009022 ; 1 - special route ROM:00009022 ; 2 - item ROM:00009022 ; 3 - special ROM:00009022 ; 4 - stamp: heart ROM:00009022 ; 5 - stamp: spade ROM:00009022 ; 6 - stamp: diamond ROM:00009022 ; 7 - stamp: club ROM:00009022 ; switch: ROM:00009022 ; zero - pokemon does ROM:00009022 ; nonzero - item needs to be switched ROM:00009022 ; item RXed: ROM:00009022 ; what sort of thing was RXed: item, map, route, etc ROM:00009026 and.w r0, e0 ROM:00009028 beq loc_903E:8 ROM:0000902A mov.w e6, r0 ROM:0000902C mov.b #8, r0h ROM:0000902E mulxu.b r0h, r0 ROM:00009030 add.b #0x18, r0l ROM:00009032 mov.w r6, e0 ROM:00009034 mov.b #8, r1h ROM:00009036 mov.b r1h, r1l ROM:00009038 mov.b #0x18, r0h ROM:0000903A jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000903E ROM:0000903E loc_903E: ; CODE XREF: drawPokemonAndItemsScreen+2A0j ROM:0000903E inc.w #1, e6 ROM:00009040 cmp.w #3, e6 ROM:00009044 blt loc_9014:8 ROM:00009046 mov.w #0x208, r4 ROM:0000904A add.w val_0x280, r4 ; 0x488 - item symbol (normal contrast) ROM:0000904C mov.w r4, r0 ROM:0000904E mov.w e5, r1 ROM:00009050 mov.w r6, e0 ROM:00009052 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009056 sub.w e6, e6 ROM:00009058 ROM:00009058 loc_9058: ; CODE XREF: drawPokemonAndItemsScreen+300j ROM:00009058 mov.w #0x40, r0 ; '@' ROM:0000905C mov.w e6, r1 ROM:0000905E ROM:0000905E loc_905E: ; CODE XREF: drawPokemonAndItemsScreen+2DCj ROM:0000905E dec.b r1l ROM:00009060 bmi loc_9066:8 ROM:00009062 shll.w r0 ROM:00009064 bra loc_905E:8 ROM:00009066 ; --------------------------------------------------------------------------- ROM:00009066 ROM:00009066 loc_9066: ; CODE XREF: drawPokemonAndItemsScreen+2D8j ROM:00009066 mov.w @gCurSubstateA:16, e0 ; Substate for various modes ROM:00009066 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009066 ; ItemScreenHandler: ROM:00009066 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009066 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009066 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009066 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009066 ; 0x0010 - light grey pokeball ROM:00009066 ; 0x0020 - tiny map icon ROM:00009066 ; 0x0040 - found item #0 (slot nonempty) ROM:00009066 ; 0x0080 - found item #1 (slot nonempty) ROM:00009066 ; 0x0100 - found item #2 (slot nonempty) ROM:00009066 ; 0x0200 - grey item icon ROM:00009066 ; ItemRXed - what was RXed ROM:00009066 ; 0 - event pokemon ROM:00009066 ; 1 - special route ROM:00009066 ; 2 - item ROM:00009066 ; 3 - special ROM:00009066 ; 4 - stamp: heart ROM:00009066 ; 5 - stamp: spade ROM:00009066 ; 6 - stamp: diamond ROM:00009066 ; 7 - stamp: club ROM:00009066 ; switch: ROM:00009066 ; zero - pokemon does ROM:00009066 ; nonzero - item needs to be switched ROM:00009066 ; item RXed: ROM:00009066 ; what sort of thing was RXed: item, map, route, etc ROM:0000906A and.w r0, e0 ROM:0000906C beq loc_9082:8 ROM:0000906E mov.w e6, r0 ROM:00009070 mov.b #8, r0h ROM:00009072 mulxu.b r0h, r0 ROM:00009074 add.b #0x18, r0l ROM:00009076 mov.w r6, e0 ROM:00009078 mov.b #8, r1h ROM:0000907A mov.b r1h, r1l ROM:0000907C mov.b #0x28, r0h ; '(' ROM:0000907E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009082 ROM:00009082 loc_9082: ; CODE XREF: drawPokemonAndItemsScreen+2E4j ROM:00009082 inc.w #1, e6 ROM:00009084 cmp.w #3, e6 ROM:00009088 blt loc_9058:8 ROM:0000908A mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:0000908A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000908A ; ItemScreenHandler: ROM:0000908A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000908A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000908A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000908A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000908A ; 0x0010 - light grey pokeball ROM:0000908A ; 0x0020 - tiny map icon ROM:0000908A ; 0x0040 - found item #0 (slot nonempty) ROM:0000908A ; 0x0080 - found item #1 (slot nonempty) ROM:0000908A ; 0x0100 - found item #2 (slot nonempty) ROM:0000908A ; 0x0200 - grey item icon ROM:0000908A ; ItemRXed - what was RXed ROM:0000908A ; 0 - event pokemon ROM:0000908A ; 1 - special route ROM:0000908A ; 2 - item ROM:0000908A ; 3 - special ROM:0000908A ; 4 - stamp: heart ROM:0000908A ; 5 - stamp: spade ROM:0000908A ; 6 - stamp: diamond ROM:0000908A ; 7 - stamp: club ROM:0000908A ; switch: ROM:0000908A ; zero - pokemon does ROM:0000908A ; nonzero - item needs to be switched ROM:0000908A ; item RXed: ROM:0000908A ; what sort of thing was RXed: item, map, route, etc ROM:0000908E btst #4, r0l ROM:00009090 beq loc_90B0:8 ROM:00009092 mov.w #0x1F0, r4 ROM:00009096 add.w val_0x280, r4 ; 0x0470 - pokeball light grey ROM:00009098 mov.w r4, r0 ROM:0000909A mov.w e5, r1 ROM:0000909C mov.w r6, e0 ROM:0000909E jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000090A2 mov.w r6, e0 ROM:000090A4 mov.b #8, r1h ROM:000090A6 mov.b r1h, r1l ROM:000090A8 mov.w #0x1830, r0 ROM:000090AC jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000090B0 ROM:000090B0 loc_90B0: ; CODE XREF: drawPokemonAndItemsScreen+308j ROM:000090B0 mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:000090B0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000090B0 ; ItemScreenHandler: ROM:000090B0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000090B0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000090B0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000090B0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000090B0 ; 0x0010 - light grey pokeball ROM:000090B0 ; 0x0020 - tiny map icon ROM:000090B0 ; 0x0040 - found item #0 (slot nonempty) ROM:000090B0 ; 0x0080 - found item #1 (slot nonempty) ROM:000090B0 ; 0x0100 - found item #2 (slot nonempty) ROM:000090B0 ; 0x0200 - grey item icon ROM:000090B0 ; ItemRXed - what was RXed ROM:000090B0 ; 0 - event pokemon ROM:000090B0 ; 1 - special route ROM:000090B0 ; 2 - item ROM:000090B0 ; 3 - special ROM:000090B0 ; 4 - stamp: heart ROM:000090B0 ; 5 - stamp: spade ROM:000090B0 ; 6 - stamp: diamond ROM:000090B0 ; 7 - stamp: club ROM:000090B0 ; switch: ROM:000090B0 ; zero - pokemon does ROM:000090B0 ; nonzero - item needs to be switched ROM:000090B0 ; item RXed: ROM:000090B0 ; what sort of thing was RXed: item, map, route, etc ROM:000090B4 btst #1, r0h ROM:000090B6 beq loc_90D6:8 ROM:000090B8 mov.w #0x218, r4 ROM:000090BC add.w val_0x280, r4 ; 0x498 - item symbol (light grey background - lower contrast) ROM:000090BE mov.w r4, r0 ROM:000090C0 mov.w e5, r1 ROM:000090C2 mov.w r6, e0 ROM:000090C4 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000090C8 mov.w r6, e0 ROM:000090CA mov.b #8, r1h ROM:000090CC mov.b r1h, r1l ROM:000090CE mov.w #0x2830, r0 ROM:000090D2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000090D6 ROM:000090D6 loc_90D6: ; CODE XREF: drawPokemonAndItemsScreen+32Ej ROM:000090D6 mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:000090D6 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000090D6 ; ItemScreenHandler: ROM:000090D6 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000090D6 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000090D6 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000090D6 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000090D6 ; 0x0010 - light grey pokeball ROM:000090D6 ; 0x0020 - tiny map icon ROM:000090D6 ; 0x0040 - found item #0 (slot nonempty) ROM:000090D6 ; 0x0080 - found item #1 (slot nonempty) ROM:000090D6 ; 0x0100 - found item #2 (slot nonempty) ROM:000090D6 ; 0x0200 - grey item icon ROM:000090D6 ; ItemRXed - what was RXed ROM:000090D6 ; 0 - event pokemon ROM:000090D6 ; 1 - special route ROM:000090D6 ; 2 - item ROM:000090D6 ; 3 - special ROM:000090D6 ; 4 - stamp: heart ROM:000090D6 ; 5 - stamp: spade ROM:000090D6 ; 6 - stamp: diamond ROM:000090D6 ; 7 - stamp: club ROM:000090D6 ; switch: ROM:000090D6 ; zero - pokemon does ROM:000090D6 ; nonzero - item needs to be switched ROM:000090D6 ; item RXed: ROM:000090D6 ; what sort of thing was RXed: item, map, route, etc ROM:000090DA btst #5, r0l ROM:000090DC beq loc_90FC:8 ROM:000090DE mov.w #0x228, r4 ROM:000090E2 add.w val_0x280, r4 ; 0x4A8 - tiny map icon ROM:000090E4 mov.w r4, r0 ROM:000090E6 mov.w e5, r1 ROM:000090E8 mov.w r6, e0 ROM:000090EA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000090EE mov.w r6, e0 ROM:000090F0 mov.b #8, r1h ROM:000090F2 mov.b r1h, r1l ROM:000090F4 mov.w #0x2810, r0 ROM:000090F8 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:000090FC ROM:000090FC loc_90FC: ; CODE XREF: drawPokemonAndItemsScreen+354j ROM:000090FC mov.w #0x58, r0 ; 'X' ROM:00009100 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00009104 adds #4, sp ROM:00009106 rts ROM:00009106 ; End of function drawPokemonAndItemsScreen ROM:00009106 ROM:00009108 ROM:00009108 ; =============== S U B R O U T I N E ======================================= ROM:00009108 ROM:00009108 ROM:00009108 sub_9108: ; CODE XREF: interactionHandlerPokemonAndItemsScreen+44p ROM:00009108 ; interactionHandlerPokemonAndItemsScreen+6Cp ... ROM:00009108 ROM:00009108 ; FUNCTION CHUNK AT ROM:00008C0E SIZE 00000054 BYTES ROM:00009108 ROM:00009108 mov.b #9, r0l ROM:0000910A mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000910A ; gifted items view: this is item number that has focus and arrow ROM:0000910A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000910A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000910A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000910E mov.w @gCurSubstateB:16, r0 ; Substate: ROM:0000910E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009112 jmp loc_8C0E:24 ROM:00009112 ; End of function sub_9108 ROM:00009112 ROM:00009116 ROM:00009116 ; =============== S U B R O U T I N E ======================================= ROM:00009116 ROM:00009116 ROM:00009116 interactionHandlerGiftedItemsScreen: ; CODE XREF: interactionHandler:case_0x0bp ROM:00009116 mov.b #4, r0l ROM:00009118 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009118 ; // 0x02 - enter ROM:00009118 ; // 0x04 - left ROM:00009118 ; // 0x08 - right ROM:0000911C mov.b r0l, r0l ROM:0000911E beq loc_9150:8 ROM:00009120 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:00009120 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009124 jsr sub_8C62:24 ROM:00009128 mov.b r0l, r0l ROM:0000912A beq loc_914A:8 ROM:0000912C mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:0000912C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000912C ; ItemScreenHandler: ROM:0000912C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000912C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000912C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000912C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000912C ; 0x0010 - light grey pokeball ROM:0000912C ; 0x0020 - tiny map icon ROM:0000912C ; 0x0040 - found item #0 (slot nonempty) ROM:0000912C ; 0x0080 - found item #1 (slot nonempty) ROM:0000912C ; 0x0100 - found item #2 (slot nonempty) ROM:0000912C ; 0x0200 - grey item icon ROM:0000912C ; ItemRXed - what was RXed ROM:0000912C ; 0 - event pokemon ROM:0000912C ; 1 - special route ROM:0000912C ; 2 - item ROM:0000912C ; 3 - special ROM:0000912C ; 4 - stamp: heart ROM:0000912C ; 5 - stamp: spade ROM:0000912C ; 6 - stamp: diamond ROM:0000912C ; 7 - stamp: club ROM:0000912C ; switch: ROM:0000912C ; zero - pokemon does ROM:0000912C ; nonzero - item needs to be switched ROM:0000912C ; item RXed: ROM:0000912C ; what sort of thing was RXed: item, map, route, etc ROM:00009130 beq loc_9166:8 ROM:00009132 sub.b r0l, r0l ROM:00009134 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009134 ; gifted items view: this is item number that has focus and arrow ROM:00009134 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009134 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009134 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009138 mov.w @gCurSubstateA:16, r0 ; Substate for various modes ROM:00009138 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009138 ; ItemScreenHandler: ROM:00009138 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009138 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009138 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009138 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009138 ; 0x0010 - light grey pokeball ROM:00009138 ; 0x0020 - tiny map icon ROM:00009138 ; 0x0040 - found item #0 (slot nonempty) ROM:00009138 ; 0x0080 - found item #1 (slot nonempty) ROM:00009138 ; 0x0100 - found item #2 (slot nonempty) ROM:00009138 ; 0x0200 - grey item icon ROM:00009138 ; ItemRXed - what was RXed ROM:00009138 ; 0 - event pokemon ROM:00009138 ; 1 - special route ROM:00009138 ; 2 - item ROM:00009138 ; 3 - special ROM:00009138 ; 4 - stamp: heart ROM:00009138 ; 5 - stamp: spade ROM:00009138 ; 6 - stamp: diamond ROM:00009138 ; 7 - stamp: club ROM:00009138 ; switch: ROM:00009138 ; zero - pokemon does ROM:00009138 ; nonzero - item needs to be switched ROM:00009138 ; item RXed: ROM:00009138 ; what sort of thing was RXed: item, map, route, etc ROM:0000913C jsr sub_8CA4:24 ROM:00009140 mov.b #0xA, r0l ; sets view to item and pokoemon ROM:00009142 jsr setCurrentlyActiveView:24 ROM:00009146 mov.b #2, r0l ROM:00009148 bra loc_9186:8 ROM:0000914A ; --------------------------------------------------------------------------- ROM:0000914A ROM:0000914A loc_914A: ; CODE XREF: interactionHandlerGiftedItemsScreen+14j ROM:0000914A mov.b #2, r0l ROM:0000914C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009150 ROM:00009150 loc_9150: ; CODE XREF: interactionHandlerGiftedItemsScreen+8j ROM:00009150 mov.b #8, r0l ROM:00009152 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009152 ; // 0x02 - enter ROM:00009152 ; // 0x04 - left ROM:00009152 ; // 0x08 - right ROM:00009156 mov.b r0l, r0l ROM:00009158 beq loc_9170:8 ROM:0000915A mov.w @gCurSubstateB:16, r0 ; Substate: ROM:0000915A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000915E jsr sub_8BD2:24 ROM:00009162 mov.b r0l, r0l ROM:00009164 beq loc_916A:8 ROM:00009166 ROM:00009166 loc_9166: ; CODE XREF: interactionHandlerGiftedItemsScreen+1Aj ROM:00009166 mov.b #1, r0l ROM:00009168 bra loc_9186:8 ROM:0000916A ; --------------------------------------------------------------------------- ROM:0000916A ROM:0000916A loc_916A: ; CODE XREF: interactionHandlerGiftedItemsScreen+4Ej ROM:0000916A mov.b #2, r0l ROM:0000916C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009170 ROM:00009170 loc_9170: ; CODE XREF: interactionHandlerGiftedItemsScreen+42j ROM:00009170 mov.b #2, r0l ROM:00009172 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009172 ; // 0x02 - enter ROM:00009172 ; // 0x04 - left ROM:00009172 ; // 0x08 - right ROM:00009176 mov.b r0l, r0l ROM:00009178 beq locret_918A:8 ROM:0000917A jsr someStateVarShuffling:24 ROM:0000917E sub.b r0l, r0l ROM:00009180 jsr setCurrentlyActiveView:24 ROM:00009184 sub.b r0l, r0l ROM:00009186 ROM:00009186 loc_9186: ; CODE XREF: interactionHandlerGiftedItemsScreen+32j ROM:00009186 ; interactionHandlerGiftedItemsScreen+52j ROM:00009186 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000918A ROM:0000918A locret_918A: ; CODE XREF: interactionHandlerGiftedItemsScreen+62j ROM:0000918A rts ROM:0000918A ; End of function interactionHandlerGiftedItemsScreen ROM:0000918A ROM:0000918C ROM:0000918C ; =============== S U B R O U T I N E ======================================= ROM:0000918C ROM:0000918C ROM:0000918C giftedItemsView: ; CODE XREF: maybe_viewDoDisplay:case__0x0bp ROM:0000918C val_0x280 = r6 ROM:0000918C sub.w #6, r7 ROM:00009190 mov.w #drawImageToScreen, r3 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009194 mov.w #eepromReadToRamAlso, r4 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009198 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000919C mov.w #0x140, r0 ROM:000091A0 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000091A4 mov.w r0, r5 ROM:000091A6 mov.l #0x3380280, er6 ROM:000091AC add.w val_0x280, e6 ; 0x05B8 = left arrow for menu activity picker navigation 8x16 ROM:000091AE mov.w r0, e0 ROM:000091B0 mov.w e6, r0 ROM:000091B2 mov.w #0x20, r1 ; ' ' ROM:000091B6 jsr @er4 ; eepromReadToRamAlso() ROM:000091B8 mov.w r5, e0 ROM:000091BA mov.w #0x1008, r1 ROM:000091BE sub.w r0, r0 ROM:000091C0 jsr @er3 ; drawImageToScreen() ROM:000091C2 mov.w #0xB90, e6 ROM:000091C6 add.w val_0x280, e6 ; 0x0E10 = "POKeMON & ITEMS" menu heading in box 80x16 ROM:000091C8 mov.w e6, r0 ROM:000091CA mov.w #0x140, r1 ROM:000091CE mov.w r5, e0 ROM:000091D0 jsr @er4 ; eepromReadToRamAlso() ROM:000091D2 mov.w r5, e0 ROM:000091D4 mov.w #0x1050, r1 ROM:000091D8 mov.w #8, r0 ROM:000091DC jsr @er3 ; drawImageToScreen() ROM:000091DE mov.w #0x1810, e6 ROM:000091E2 add.w val_0x280, e6 ; 0x1A90 = large present icon for item view 32x24 ROM:000091E4 mov.w e6, r0 ROM:000091E6 mov.w #0xC0, r1 ; '+' ROM:000091EA mov.w r5, e0 ROM:000091EC jsr @er4 ; eepromReadToRamAlso() ROM:000091EE mov.w r5, e0 ROM:000091F0 mov.w #0x1820, r1 ROM:000091F4 mov.b r1h, r0h ROM:000091F6 mov.b #0x3C, r0l ; '<' ROM:000091F8 jsr @er3 ; drawImageToScreen() ROM:000091FA mov.b @curUiFlags:16, r0l ; bits: ROM:000091FA ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:000091FA ; 0x02 - slower animation frame ROM:000091FE and.b #1, r0l ROM:00009200 extu.w r0 ROM:00009202 add.w #3, r0 ; 3 or 4 base don animation time ROM:00009206 mov.w #0x10, e0 ROM:0000920A mulxu.w e0, er0 ; 0x30 or 0x40 ROM:0000920C mov.w #0x278, r1 ROM:00009210 add.w val_0x280, r1 ; 0x04F8 = arrows (up down left right), each in 3 configurations: {moved in direction it points, neutral, inverted (white) } 8x8 each ROM:00009212 add.w r0, r1 ; down arrow in each of 2 animation frames ROM:00009214 mov.w r1, r0 ROM:00009216 mov.w #0x10, r1 ROM:0000921A mov.w r5, e0 ROM:0000921C jsr @er4 ; eepromReadToRamAlso() ROM:0000921E ROM:0000921E drawArrowPointingToCurrentlySelectedItem: ; Substate: ROM:0000921E mov.b @gCurSubstateY:16, r0l ; gifted items view: this is item number that has focus and arrow ROM:0000921E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000921E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000921E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009222 extu.w r0 ROM:00009224 mov.w r0, e6 ROM:00009226 exts.l er0 ROM:00009228 mov.w #5, r1 ; 5 per row ROM:0000922C divxs.w r1, er0 ROM:00009230 mov.w e0, r0 ; remainder = index in this row ROM:00009232 mov.b #8, r0h ROM:00009234 mulxu.b r0h, r0 ; each column is 8 wide ROM:00009236 add.b #0x10, r0l ; first is at 16 ROM:00009238 mov.b r0l, r2l ROM:0000923A mov.w e6, r0 ROM:0000923C exts.l er0 ROM:0000923E divxs.w r1, er0 ; get row # in r0 ROM:00009242 mov.b #0x10, r0h ROM:00009244 mulxu.b r0h, r0 ; each is 16 tall ROM:00009246 add.b #0x10, r0l ; first is at 16 ROM:00009248 mov.b r0l, r0h ROM:0000924A mov.w r5, e0 ROM:0000924C mov.b #8, r1h ROM:0000924E mov.b r1h, r1l ROM:00009250 mov.b r2l, r0l ROM:00009252 jsr @er3 ; drawImageToScreen() ROM:00009254 add.w #0x208, val_0x280 ROM:00009258 mov.w r6, r0 ; 0x0488 = item symbol (normal contrast) 8x8 ROM:0000925A mov.w #0x10, r1 ROM:0000925E mov.w r5, e0 ROM:00009260 jsr @er4 ; eepromReadToRamAlso() ROM:00009262 ROM:00009262 draw_firsttow: ROM:00009262 sub.w r6, r6 ROM:00009264 ROM:00009264 loc_9264: ; CODE XREF: giftedItemsView+106j ROM:00009264 mov.w #1, r0 ROM:00009268 mov.b r6l, r1l ROM:0000926A ROM:0000926A loc_926A: ; CODE XREF: giftedItemsView+E4j ROM:0000926A dec.b r1l ; r0 = 1 << r6 ROM:0000926C bmi loc_9272:8 ROM:0000926E shll.w r0 ROM:00009270 bra loc_926A:8 ROM:00009272 ; --------------------------------------------------------------------------- ROM:00009272 ROM:00009272 loc_9272: ; CODE XREF: giftedItemsView+E0j ROM:00009272 mov.w @gCurSubstateB:16, e0 ; Substate: ROM:00009272 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009276 and.w r0, e0 ROM:00009278 beq no_such_item:8 ROM:0000927A mov.b r6l, r0l ROM:0000927C mov.b #8, r0h ROM:0000927E mulxu.b r0h, r0 ROM:00009280 add.b #0x10, r0l ROM:00009282 mov.w r5, e0 ROM:00009284 mov.b #8, r1h ROM:00009286 mov.b r1h, r1l ROM:00009288 mov.b #0x18, r0h ROM:0000928A jsr @er3 ; drawImageToScreen (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000928C ROM:0000928C no_such_item: ; CODE XREF: giftedItemsView+ECj ROM:0000928C inc.w #1, r6 ROM:0000928E cmp.w #5, r6 ROM:00009292 blt loc_9264:8 ROM:00009294 ROM:00009294 draw_second_row: ROM:00009294 sub.w r6, r6 ROM:00009296 ROM:00009296 loc_9296: ; CODE XREF: giftedItemsView+138j ROM:00009296 mov.w #0x20, r0 ; ' ' ROM:0000929A mov.b r6l, r1l ROM:0000929C ROM:0000929C loc_929C: ; CODE XREF: giftedItemsView+116j ROM:0000929C dec.b r1l ROM:0000929E bmi loc_92A4:8 ROM:000092A0 shll.w r0 ROM:000092A2 bra loc_929C:8 ROM:000092A4 ; --------------------------------------------------------------------------- ROM:000092A4 ROM:000092A4 loc_92A4: ; CODE XREF: giftedItemsView+112j ROM:000092A4 mov.w @gCurSubstateB:16, e0 ; Substate: ROM:000092A4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000092A8 and.w r0, e0 ROM:000092AA beq loc_92BE:8 ROM:000092AC mov.b r6l, r0l ROM:000092AE mov.b #8, r0h ROM:000092B0 mulxu.b r0h, r0 ROM:000092B2 add.b #0x10, r0l ROM:000092B4 mov.w r5, e0 ROM:000092B6 mov.b #8, r1h ROM:000092B8 mov.b r1h, r1l ROM:000092BA mov.b #0x28, r0h ; '(' ROM:000092BC jsr @er3 ; drawImageToScreen() ROM:000092BE ROM:000092BE loc_92BE: ; CODE XREF: giftedItemsView+11Ej ROM:000092BE inc.w #1, r6 ROM:000092C0 cmp.w #5, r6 ROM:000092C4 blt loc_9296:8 ROM:000092C6 mov.w r7, e0 ROM:000092C8 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:000092C8 ; gifted items view: this is item number that has focus and arrow ROM:000092C8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000092C8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000092C8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000092CC extu.w r1 ROM:000092CE shll.w r1 ROM:000092D0 shll.w r1 ROM:000092D2 mov.w #0xCEC8, r0 ROM:000092D6 add.w r1, r0 ROM:000092D8 mov.w #4, r1 ROM:000092DC jsr @er4 ; eepromReadToRamAlso() reads to stack. thta is where e0 is right now ROM:000092DE mov.w #0x14, r0 ROM:000092E2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:000092E6 mov.w r0, r5 ROM:000092E8 mov.w r0, e0 ROM:000092EA mov.w #0x8F8C, r0 ; items on this route ROM:000092EE mov.w #0x14, r1 ROM:000092F2 jsr @er4 ; eepromReadToRamAlso() ROM:000092F4 ROM:000092F4 findItemInfoByType: ROM:000092F4 sub.w r6, r6 ROM:000092F6 ROM:000092F6 loc_92F6: ; CODE XREF: giftedItemsView+18Cj ROM:000092F6 mov.w r6, r0 ROM:000092F8 shll.w r0 ROM:000092FA add.w r5, r0 ROM:000092FC mov.w @sp, e0 ROM:000092FE mov.w @er0, r0 ROM:00009300 cmp.w r0, e0 ROM:00009302 bne loc_9312:8 ROM:00009304 ROM:00009304 item_found: ROM:00009304 mov.b r6l, r1l ROM:00009306 mov.b #0xF, r1h ROM:00009308 mov.w #0x3000, r0 ROM:0000930C jsr drawRouteAvailableItemName:24 ; (r0l = x, r0h = y, r1l = itemIdxInRouteAvailableItems, r1h = nameBorderFlags) ROM:00009310 bra loc_931A:8 ROM:00009312 ; --------------------------------------------------------------------------- ROM:00009312 ROM:00009312 loc_9312: ; CODE XREF: giftedItemsView+176j ROM:00009312 inc.w #1, r6 ROM:00009314 cmp.w #0xA, r6 ROM:00009318 blt loc_92F6:8 ROM:0000931A ROM:0000931A loc_931A: ; CODE XREF: giftedItemsView+184j ROM:0000931A mov.w #0x58, r0 ; 'X' ROM:0000931E jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00009322 add.w #6, r7 ROM:00009326 rts ROM:00009326 ; End of function giftedItemsView ROM:00009326 ROM:00009328 ROM:00009328 ; =============== S U B R O U T I N E ======================================= ROM:00009328 ROM:00009328 ROM:00009328 clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6: ROM:00009328 ; CODE XREF: performActionAsRequestedByRemote+20Cp ROM:00009328 ; ENTRY+6Ep ROM:00009328 sub.b r0l, r0l ROM:0000932A mov.b r0l, @byte_FFF8EE:16 ROM:0000932E sub.l er1, er1 ROM:00009330 mov.l er1, @dword_FFF8EA:16 ROM:00009336 mov.l er1, @dword_FFF8E6:16 ROM:0000933C mov.b r0l, @byte_FFF8EF:16 ROM:00009340 rts ROM:00009340 ; End of function clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6 ROM:00009340 ROM:00009342 ROM:00009342 ; =============== S U B R O U T I N E ======================================= ROM:00009342 ROM:00009342 ROM:00009342 sub_9342: ; CODE XREF: sub_9698+AAp ROM:00009342 push.w r2 ROM:00009344 push.w e4 ROM:00009346 push.l er6 ROM:0000934A mov.b r0l, r5l ROM:0000934C mov.w e0, r4 ROM:0000934E mov.b r5l, r1l ROM:00009350 extu.w r1 ROM:00009352 shll.w r1 ROM:00009354 add.w r4, r1 ROM:00009356 mov.w r1, r6 ROM:00009358 mov.b r5l, r1l ROM:0000935A extu.w r1 ROM:0000935C mov.w r1, e6 ROM:0000935E mov.b r5l, r5l ROM:00009360 bne loc_93AE:8 ROM:00009362 mov.l @er6, er4 ROM:00009366 mov.w e4, r1 ROM:00009368 add.w r4, r1 ROM:0000936A mov.w r1, r6 ROM:0000936C mov.w e6, r1 ROM:0000936E add.w #5, r1 ROM:00009372 mov.b r1l, r1h ROM:00009374 sub.b r1l, r1l ROM:00009376 shll.w r1 ROM:00009378 exts.l er1 ROM:0000937A mov.w e4, r0 ROM:0000937C extu.l er0 ROM:0000937E mov.w e0, r2 ROM:00009380 mulxu.w r1, er2 ROM:00009382 mov.w e1, r5 ROM:00009384 mulxu.w r0, er5 ROM:00009386 mulxu.w r1, er0 ROM:00009388 add.w r2, e0 ROM:0000938A add.w r5, e0 ROM:0000938C mov.w e6, r1 ROM:0000938E add.w #6, r1 ROM:00009392 mov.b r1l, r1h ROM:00009394 sub.b r1l, r1l ROM:00009396 shll.w r1 ROM:00009398 exts.l er1 ROM:0000939A extu.l er4 ROM:0000939C mov.w e1, r2 ROM:0000939E mulxu.w r4, er2 ROM:000093A0 mov.w e4, r5 ROM:000093A2 mulxu.w r1, er5 ROM:000093A4 mulxu.w r4, er1 ROM:000093A6 add.w r2, e1 ROM:000093A8 add.w r5, e1 ROM:000093AA jmp loc_9442:24 ROM:000093AE ; --------------------------------------------------------------------------- ROM:000093AE ROM:000093AE loc_93AE: ; CODE XREF: sub_9342+1Ej ROM:000093AE cmp.b #9, r5l ROM:000093B0 bne loc_93D2:8 ROM:000093B2 mov.w @(0x10:16,er4), e4 ROM:000093B6 mov.w @(0x12:16,er4), e6 ROM:000093BA mov.w e4, r6 ROM:000093BC add.w e6, r6 ROM:000093BE mov.w e4, r5 ROM:000093C0 mov.w #0x1A00, e5 ROM:000093C4 mulxu.w e5, er5 ROM:000093C6 mov.w e6, r0 ROM:000093C8 mov.w #0x1C00, e0 ROM:000093CC mulxu.w e0, er0 ROM:000093CE add.l er0, er5 ROM:000093D0 bra loc_9446:8 ROM:000093D2 ; --------------------------------------------------------------------------- ROM:000093D2 ROM:000093D2 loc_93D2: ; CODE XREF: sub_9342+6Ej ROM:000093D2 mov.w @(-2:16,er6), r4 ROM:000093D6 mov.w @(2:16,er6), e4 ROM:000093DA mov.w r4, r0 ROM:000093DC add.w e4, r0 ROM:000093DE mov.w @er6, r3 ROM:000093E0 add.w r3, r0 ROM:000093E2 mov.w r0, r6 ROM:000093E4 add.w #4, r1 ROM:000093E8 mov.b r1l, r1h ROM:000093EA sub.b r1l, r1l ROM:000093EC shll.w r1 ROM:000093EE exts.l er1 ROM:000093F0 mov.w r4, r0 ROM:000093F2 extu.l er0 ROM:000093F4 mov.w e0, r2 ROM:000093F6 mulxu.w r1, er2 ROM:000093F8 mov.w e1, r5 ROM:000093FA mulxu.w r0, er5 ROM:000093FC mulxu.w r1, er0 ROM:000093FE add.w r2, e0 ROM:00009400 add.w r5, e0 ROM:00009402 mov.w e6, r1 ROM:00009404 add.w #6, r1 ROM:00009408 mov.b r1l, r1h ROM:0000940A sub.b r1l, r1l ROM:0000940C shll.w r1 ROM:0000940E exts.l er1 ROM:00009410 mov.w e4, r4 ROM:00009412 extu.l er4 ROM:00009414 mov.w e1, r2 ROM:00009416 mulxu.w r4, er2 ROM:00009418 mov.w e4, r5 ROM:0000941A mulxu.w r1, er5 ROM:0000941C mulxu.w r4, er1 ROM:0000941E add.w r2, e1 ROM:00009420 add.w r5, e1 ROM:00009422 add.l er1, er0 ROM:00009424 mov.w e6, r1 ROM:00009426 add.w #5, r1 ROM:0000942A mov.b r1l, r1h ROM:0000942C sub.b r1l, r1l ROM:0000942E shll.w r1 ROM:00009430 exts.l er1 ROM:00009432 extu.l er3 ROM:00009434 mov.w e1, r2 ROM:00009436 mulxu.w r3, er2 ROM:00009438 mov.w e3, r4 ROM:0000943A mulxu.w r1, er4 ROM:0000943C mulxu.w r3, er1 ROM:0000943E add.w r2, e1 ROM:00009440 add.w r4, e1 ROM:00009442 ROM:00009442 loc_9442: ; CODE XREF: sub_9342+68j ROM:00009442 add.l er1, er0 ROM:00009444 mov.l er0, er5 ROM:00009446 ROM:00009446 loc_9446: ; CODE XREF: sub_9342+8Ej ROM:00009446 mov.w r6, r1 ROM:00009448 extu.l er1 ROM:0000944A mov.l er5, er0 ROM:0000944C jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00009450 pop.l er6 ROM:00009454 pop.w e4 ROM:00009456 pop.w r2 ROM:00009458 rts ROM:00009458 ; End of function sub_9342 ROM:00009458 ROM:0000945A ROM:0000945A ; =============== S U B R O U T I N E ======================================= ROM:0000945A ROM:0000945A ROM:0000945A processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded: ROM:0000945A ; CODE XREF: sleepModeEventLoop+76p ROM:0000945A push.l er2 ROM:0000945E push.l er3 ROM:00009462 push.l er4 ROM:00009466 push.l er5 ROM:0000946A push.l er6 ROM:0000946E mov.w #common_bit_flags, r0 ROM:00009472 bclr #7, @er0 ROM:00009476 sub.w r6, r6 ROM:00009478 sub.w r0, r0 ROM:0000947A ROM:0000947A loc_947A: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+30j ROM:0000947A mov.w r0, @(sometimes_new_rxed_data_for_0xED,er6) ; from ??? and from peer play peer ROM:0000947E inc.w #2, r6 ROM:00009480 mov.w r0, @(sometimes_new_rxed_data_for_0xED,er6) ; from ??? and from peer play peer ROM:00009484 inc.w #2, r6 ROM:00009486 cmp.w #0x40, r6 ; '@' ROM:0000948A bcs loc_947A:8 ROM:0000948C mov.w #ACCEL_SAMPLES_X, r0 ROM:00009490 jsr processAcceleromerSamplesAxis:24 ; (r0 = dataPtr) // dat afo rone axi (x y or z) ROM:00009494 mov.w #ACCEL_SAMPLES_Y, r0 ROM:00009498 jsr processAcceleromerSamplesAxis:24 ; (r0 = dataPtr) // dat afo rone axi (x y or z) ROM:0000949C mov.w #ACCEL_SAMPLES_Z, r0 ROM:000094A0 jsr processAcceleromerSamplesAxis:24 ; (r0 = dataPtr) // dat afo rone axi (x y or z) ROM:000094A4 mov.w #sometimes_new_rxed_data_for_0xED, r0 ; from ??? and from peer play peer ROM:000094A8 jsr sub_9698:24 ROM:000094AC mov.l er0, er6 ROM:000094AE mov.b @currentlyActiveView:16, r1l ROM:000094B2 cmp.b #0x17, r1l ROM:000094B4 bne loc_9560:16 ROM:000094B8 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:000094B8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000094B8 ; ItemScreenHandler: ROM:000094B8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000094B8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000094B8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000094B8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000094B8 ; 0x0010 - light grey pokeball ROM:000094B8 ; 0x0020 - tiny map icon ROM:000094B8 ; 0x0040 - found item #0 (slot nonempty) ROM:000094B8 ; 0x0080 - found item #1 (slot nonempty) ROM:000094B8 ; 0x0100 - found item #2 (slot nonempty) ROM:000094B8 ; 0x0200 - grey item icon ROM:000094B8 ; ItemRXed - what was RXed ROM:000094B8 ; 0 - event pokemon ROM:000094B8 ; 1 - special route ROM:000094B8 ; 2 - item ROM:000094B8 ; 3 - special ROM:000094B8 ; 4 - stamp: heart ROM:000094B8 ; 5 - stamp: spade ROM:000094B8 ; 6 - stamp: diamond ROM:000094B8 ; 7 - stamp: club ROM:000094B8 ; switch: ROM:000094B8 ; zero - pokemon does ROM:000094B8 ; nonzero - item needs to be switched ROM:000094B8 ; item RXed: ROM:000094B8 ; what sort of thing was RXed: item, map, route, etc ROM:000094BC mov.b @gCurSubstateF:16, r0h ; different per view ROM:000094BC ; battle: ROM:000094BC ; bitfield [3..5]: battle action animation (our action) ROM:000094BC ; 0 - attacked ROM:000094BC ; 1 - evaded ROM:000094BC ; 2 - critical hit ROM:000094BC ; bitfield [1..2]: battle action animation (their action) ROM:000094BC ; 0 - attacked ROM:000094BC ; 1 - evaded ROM:000094BC ; 2 - critical hit ROM:000094C0 cmp.b r0h, r0l ROM:000094C2 bcc loc_952E:8 ROM:000094C4 mov.l er6, er6 ROM:000094C6 beq loc_9560:16 ROM:000094CA inc.b r0l ROM:000094CC mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:000094CC ; POKeRADAR: currently pointed-to bush (arrow location) ROM:000094CC ; ItemScreenHandler: ROM:000094CC ; 0x0001 - have walking pokemon (are we on a stroll) ROM:000094CC ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:000094CC ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:000094CC ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:000094CC ; 0x0010 - light grey pokeball ROM:000094CC ; 0x0020 - tiny map icon ROM:000094CC ; 0x0040 - found item #0 (slot nonempty) ROM:000094CC ; 0x0080 - found item #1 (slot nonempty) ROM:000094CC ; 0x0100 - found item #2 (slot nonempty) ROM:000094CC ; 0x0200 - grey item icon ROM:000094CC ; ItemRXed - what was RXed ROM:000094CC ; 0 - event pokemon ROM:000094CC ; 1 - special route ROM:000094CC ; 2 - item ROM:000094CC ; 3 - special ROM:000094CC ; 4 - stamp: heart ROM:000094CC ; 5 - stamp: spade ROM:000094CC ; 6 - stamp: diamond ROM:000094CC ; 7 - stamp: club ROM:000094CC ; switch: ROM:000094CC ; zero - pokemon does ROM:000094CC ; nonzero - item needs to be switched ROM:000094CC ; item RXed: ROM:000094CC ; what sort of thing was RXed: item, map, route, etc ROM:000094D0 mov.w @gCurSubstateB:16, r0 ; Substate: ROM:000094D0 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:000094D4 mov.w @word_FFF7DA:16, e0 ROM:000094D8 cmp.w e0, r0 ROM:000094DA bcc loc_94E2:8 ROM:000094DC mov.b #0x18, r0l ROM:000094DE mov.b r0l, @currentlyActiveView:16 ROM:000094E2 ROM:000094E2 loc_94E2: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+80j ROM:000094E2 mov.w @gCurSubstateC:16, r0 ROM:000094E6 cmp.w e0, r0 ROM:000094E8 bcc loc_94F0:8 ROM:000094EA mov.b #0x18, r0l ROM:000094EC mov.b r0l, @currentlyActiveView:16 ROM:000094F0 ROM:000094F0 loc_94F0: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+8Ej ROM:000094F0 mov.w @gCurSubstateE:16, r0 ; ubstate for various modes ROM:000094F0 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:000094F4 cmp.w e0, r0 ROM:000094F6 bcc loc_94FE:8 ROM:000094F8 mov.b #0x18, r0l ROM:000094FA mov.b r0l, @currentlyActiveView:16 ROM:000094FE ROM:000094FE loc_94FE: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+9Cj ROM:000094FE mov.w @gCurSubstateB:16, r0 ; Substate: ROM:000094FE ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009502 mov.w @word_FFF7DC:16, e0 ROM:00009506 cmp.w e0, r0 ROM:00009508 bls loc_9510:8 ROM:0000950A mov.b #0x18, r0l ROM:0000950C mov.b r0l, @currentlyActiveView:16 ROM:00009510 ROM:00009510 loc_9510: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+AEj ROM:00009510 mov.w @gCurSubstateC:16, r0 ROM:00009514 cmp.w e0, r0 ROM:00009516 bls loc_951E:8 ROM:00009518 mov.b #0x18, r0l ROM:0000951A mov.b r0l, @currentlyActiveView:16 ROM:0000951E ROM:0000951E loc_951E: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+BCj ROM:0000951E mov.w @gCurSubstateE:16, r0 ; ubstate for various modes ROM:0000951E ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009522 cmp.w e0, r0 ROM:00009524 bls loc_9560:8 ROM:00009526 mov.b #0x18, r0l ROM:00009528 mov.b r0l, @currentlyActiveView:16 ROM:0000952C bra loc_9560:8 ROM:0000952E ; --------------------------------------------------------------------------- ROM:0000952E ROM:0000952E loc_952E: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+68j ROM:0000952E mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000952E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000952E ; ItemScreenHandler: ROM:0000952E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000952E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000952E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000952E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000952E ; 0x0010 - light grey pokeball ROM:0000952E ; 0x0020 - tiny map icon ROM:0000952E ; 0x0040 - found item #0 (slot nonempty) ROM:0000952E ; 0x0080 - found item #1 (slot nonempty) ROM:0000952E ; 0x0100 - found item #2 (slot nonempty) ROM:0000952E ; 0x0200 - grey item icon ROM:0000952E ; ItemRXed - what was RXed ROM:0000952E ; 0 - event pokemon ROM:0000952E ; 1 - special route ROM:0000952E ; 2 - item ROM:0000952E ; 3 - special ROM:0000952E ; 4 - stamp: heart ROM:0000952E ; 5 - stamp: spade ROM:0000952E ; 6 - stamp: diamond ROM:0000952E ; 7 - stamp: club ROM:0000952E ; switch: ROM:0000952E ; zero - pokemon does ROM:0000952E ; nonzero - item needs to be switched ROM:0000952E ; item RXed: ROM:0000952E ; what sort of thing was RXed: item, map, route, etc ROM:00009532 mov.b @gCurSubstateF+1:16, r0h ; different per view ROM:00009532 ; battle: ROM:00009532 ; bitfield [3..5]: battle action animation (our action) ROM:00009532 ; 0 - attacked ROM:00009532 ; 1 - evaded ROM:00009532 ; 2 - critical hit ROM:00009532 ; bitfield [1..2]: battle action animation (their action) ROM:00009532 ; 0 - attacked ROM:00009532 ; 1 - evaded ROM:00009532 ; 2 - critical hit ROM:00009536 cmp.b r0h, r0l ROM:00009538 bcc loc_9560:8 ROM:0000953A mov.w @word_FFF7DE:16, r1 ROM:0000953E mov.w @gCurSubstateB:16, r0 ; Substate: ROM:0000953E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009542 cmp.w r1, r0 ROM:00009544 bcc loc_9560:8 ROM:00009546 mov.w @gCurSubstateC:16, r0 ROM:0000954A cmp.w r1, r0 ROM:0000954C bcc loc_9560:8 ROM:0000954E mov.w @gCurSubstateE:16, r0 ; ubstate for various modes ROM:0000954E ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009552 cmp.w r1, r0 ROM:00009554 bcc loc_9560:8 ROM:00009556 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00009556 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009556 ; ItemScreenHandler: ROM:00009556 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009556 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009556 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009556 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009556 ; 0x0010 - light grey pokeball ROM:00009556 ; 0x0020 - tiny map icon ROM:00009556 ; 0x0040 - found item #0 (slot nonempty) ROM:00009556 ; 0x0080 - found item #1 (slot nonempty) ROM:00009556 ; 0x0100 - found item #2 (slot nonempty) ROM:00009556 ; 0x0200 - grey item icon ROM:00009556 ; ItemRXed - what was RXed ROM:00009556 ; 0 - event pokemon ROM:00009556 ; 1 - special route ROM:00009556 ; 2 - item ROM:00009556 ; 3 - special ROM:00009556 ; 4 - stamp: heart ROM:00009556 ; 5 - stamp: spade ROM:00009556 ; 6 - stamp: diamond ROM:00009556 ; 7 - stamp: club ROM:00009556 ; switch: ROM:00009556 ; zero - pokemon does ROM:00009556 ; nonzero - item needs to be switched ROM:00009556 ; item RXed: ROM:00009556 ; what sort of thing was RXed: item, map, route, etc ROM:0000955A inc.b r0l ROM:0000955C mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:0000955C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000955C ; ItemScreenHandler: ROM:0000955C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000955C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000955C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000955C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000955C ; 0x0010 - light grey pokeball ROM:0000955C ; 0x0020 - tiny map icon ROM:0000955C ; 0x0040 - found item #0 (slot nonempty) ROM:0000955C ; 0x0080 - found item #1 (slot nonempty) ROM:0000955C ; 0x0100 - found item #2 (slot nonempty) ROM:0000955C ; 0x0200 - grey item icon ROM:0000955C ; ItemRXed - what was RXed ROM:0000955C ; 0 - event pokemon ROM:0000955C ; 1 - special route ROM:0000955C ; 2 - item ROM:0000955C ; 3 - special ROM:0000955C ; 4 - stamp: heart ROM:0000955C ; 5 - stamp: spade ROM:0000955C ; 6 - stamp: diamond ROM:0000955C ; 7 - stamp: club ROM:0000955C ; switch: ROM:0000955C ; zero - pokemon does ROM:0000955C ; nonzero - item needs to be switched ROM:0000955C ; item RXed: ROM:0000955C ; what sort of thing was RXed: item, map, route, etc ROM:00009560 ROM:00009560 loc_9560: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+5Aj ROM:00009560 ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+6Cj ... ROM:00009560 mov.l er6, er6 ROM:00009562 bne loc_9570:8 ROM:00009564 sub.l er0, er0 ROM:00009566 mov.l er0, @dword_FFF8EA:16 ROM:0000956C jmp loc_9682:24 ROM:00009570 ; --------------------------------------------------------------------------- ROM:00009570 ROM:00009570 loc_9570: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+108j ROM:00009570 mov.w #common_bit_flags, r0 ROM:00009574 bset #7, @er0 ROM:00009578 mov.l @dword_FFF8EA:16, er0 ROM:0000957E beq loc_9644:16 ROM:00009582 mov.l @dword_FFF8E6:16, er1 ROM:00009588 add.l er0, er1 ROM:0000958A mov.l er1, @dword_FFF8E6:16 ROM:00009590 sub.l er0, er0 ROM:00009592 mov.l er0, @dword_FFF8EA:16 ROM:00009598 mov.l er1, er0 ROM:0000959A shar.l er0 ROM:0000959C mov.b r0h, @step_detection_related_A:16 ROM:000095A0 mov.l er1, er0 ROM:000095A2 and.l #0x1FF, er0 ROM:000095A8 mov.l er0, @dword_FFF8E6:16 ROM:000095AE mov.b @step_detection_related_A:16, r0l ROM:000095B2 extu.w r0 ROM:000095B4 mov.w @someWalkingRelatedState:16, e0 ; clamped to 9999 (what is this?) ROM:000095B8 add.w r0, e0 ROM:000095BA mov.w e0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:000095BE mov.w @someWalkingRelatedState:16, r0 ; clamped to 9999 (what is this?) ROM:000095C2 cmp.w #9999, r0 ROM:000095C6 bls loc_95D0:8 ROM:000095C8 mov.w #9999, r0 ROM:000095CC mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:000095D0 ROM:000095D0 loc_95D0: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+16Cj ROM:000095D0 sub.l er0, er0 ROM:000095D2 mov.b @step_detection_related_A:16, r0l ROM:000095D6 mov.l @stepCountTodaySoFar:16, er1 ROM:000095DC add.l er0, er1 ROM:000095DE mov.l er1, @stepCountTodaySoFar:16 ROM:000095E4 mov.l @stepCountTodaySoFar:16, er0 ROM:000095EA cmp.l #0x1869F, er0 ROM:000095F0 bls loc_95FE:8 ROM:000095F2 mov.l #0x1869F, er0 ROM:000095F8 mov.l er0, @stepCountTodaySoFar:16 ROM:000095FE ROM:000095FE loc_95FE: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+196j ROM:000095FE sub.l er0, er0 ROM:00009600 mov.b @step_detection_related_A:16, r0l ROM:00009604 mov.l @RamCache_totalSteps:16, er1 ROM:0000960A add.l er1, er0 ROM:0000960C jsr clampTotalStepToLimit:24 ROM:00009610 mov.b @step_detection_related_A:16, r0l ROM:00009614 mov.b @stepToWattDividerState:16, r0h ; counts to 20, when reached, watt increments, this resets ROM:00009618 add.b r0l, r0h ROM:0000961A mov.b r0h, @stepToWattDividerState:16 ; counts to 20, when reached, watt increments, this resets ROM:0000961E mov.b @stepToWattDividerState:16, r0l ; counts to 20, when reached, watt increments, this resets ROM:00009622 cmp.b #0x14, r0l ROM:00009624 bcs loc_9644:8 ROM:00009626 mov.b @stepToWattDividerState:16, r0l ; counts to 20, when reached, watt increments, this resets ROM:0000962A add.b #0xEC, r0l ; '8' ROM:0000962C mov.b r0l, @stepToWattDividerState:16 ; counts to 20, when reached, watt increments, this resets ROM:00009630 mov.w @RamCache_curWatts:16, r0 ROM:00009634 inc.w #1, r0 ROM:00009636 cmp.w #0x270F, r0 ROM:0000963A bls loc_9640:8 ROM:0000963C mov.w #0x270F, r0 ROM:00009640 ROM:00009640 loc_9640: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+1E0j ROM:00009640 mov.w r0, @RamCache_curWatts:16 ROM:00009644 ROM:00009644 loc_9644: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+124j ROM:00009644 ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+1CAj ROM:00009644 mov.l @dword_FFF8E6:16, er0 ROM:0000964A add.l er6, er0 ROM:0000964C mov.l er0, @dword_FFF8E6:16 ROM:00009652 shar.l er0 ROM:00009654 mov.b r0h, @step_detection_related_A:16 ROM:00009658 mov.l @dword_FFF8E6:16, er0 ROM:0000965E and.l #0x1FF, er0 ROM:00009664 mov.l er0, @dword_FFF8E6:16 ROM:0000966A mov.b @step_detection_related_A:16, r0l ROM:0000966E beq loc_9676:8 ROM:00009670 mov.b #0x1E, r0l ROM:00009672 mov.b r0l, @byte_FFF7B0:16 ROM:00009676 ROM:00009676 loc_9676: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+214j ROM:00009676 sub.b r0l, r0l ROM:00009678 mov.b r0l, @step_detection_related_B:16 ROM:0000967C mov.b #0x20, r0l ; ' ' ROM:0000967E mov.b r0l, @step_detection_related_C:16 ROM:00009682 ROM:00009682 loc_9682: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+112j ROM:00009682 pop.l er6 ROM:00009686 pop.l er5 ROM:0000968A pop.l er4 ROM:0000968E pop.l er3 ROM:00009692 pop.l er2 ROM:00009696 rts ROM:00009696 ; End of function processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded ROM:00009696 ROM:00009698 ROM:00009698 ; =============== S U B R O U T I N E ======================================= ROM:00009698 ROM:00009698 ROM:00009698 sub_9698: ; CODE XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+4Ep ROM:00009698 push.l er6 ROM:0000969C mov.w r0, e4 ROM:0000969E sub.w e1, e1 ROM:000096A0 mov.w e4, r1 ROM:000096A2 inc.w #2, r1 ROM:000096A4 sub.b r6l, r6l ROM:000096A6 mov.w r1, r5 ROM:000096A8 ROM:000096A8 loc_96A8: ; CODE XREF: sub_9698+1Ej ROM:000096A8 mov.w @er5, r0 ROM:000096AA cmp.w r0, e1 ROM:000096AC bcc loc_96B0:8 ROM:000096AE mov.w r0, e1 ROM:000096B0 ROM:000096B0 loc_96B0: ; CODE XREF: sub_9698+14j ROM:000096B0 inc.b r6l ROM:000096B2 inc.w #2, r5 ROM:000096B4 cmp.b #0x1D, r6l ROM:000096B6 bcs loc_96A8:8 ROM:000096B8 sub.w r5, r5 ROM:000096BA mov.b #0xFF, r6h ROM:000096BC mov.w e4, r1 ROM:000096BE add.w #0xA, r1 ROM:000096C2 sub.b r6l, r6l ROM:000096C4 ROM:000096C4 loc_96C4: ; CODE XREF: sub_9698+5Ej ROM:000096C4 mov.b r6l, r0l ROM:000096C6 extu.w r0 ROM:000096C8 mov.w #unk_BEF8, r4 ROM:000096CC add.w r0, r4 ROM:000096CE mov.b @er4, r0l ROM:000096D0 extu.w r0 ROM:000096D2 shll.w r0 ROM:000096D4 add.w r1, r0 ROM:000096D6 mov.w @er0, e6 ROM:000096D8 cmp.w #0x200, e6 ROM:000096DC bcs loc_96F2:8 ROM:000096DE mov.w r5, r0 ROM:000096E0 mov.w r0, e0 ROM:000096E2 add.w r0, r0 ROM:000096E4 add.w e0, r0 ROM:000096E6 mov.w e6, e0 ROM:000096E8 shll.w e0 ROM:000096EA cmp.w e0, r0 ROM:000096EC bcc loc_96F2:8 ROM:000096EE mov.b @er4, r6h ROM:000096F0 mov.w e6, r5 ROM:000096F2 ROM:000096F2 loc_96F2: ; CODE XREF: sub_9698+44j ROM:000096F2 ; sub_9698+54j ROM:000096F2 inc.b r6l ROM:000096F4 cmp.b #0xA, r6l ROM:000096F6 bcs loc_96C4:8 ROM:000096F8 mov.b @byte_FFF8EF:16, r0l ROM:000096FC beq loc_9712:8 ROM:000096FE shll.w r5 ROM:00009700 shll.w r5 ROM:00009702 mov.w r5, r0 ROM:00009704 extu.l er0 ROM:00009706 mov.w #3, r1 ROM:0000970A divxu.w r1, er0 ROM:0000970C cmp.w r0, e1 ROM:0000970E bls loc_971A:8 ROM:00009710 bra loc_9718:8 ROM:00009712 ; --------------------------------------------------------------------------- ROM:00009712 ROM:00009712 loc_9712: ; CODE XREF: sub_9698+64j ROM:00009712 shll.w r5 ROM:00009714 cmp.w r5, e1 ROM:00009716 bls loc_971A:8 ROM:00009718 ROM:00009718 loc_9718: ; CODE XREF: sub_9698+78j ROM:00009718 mov.b #0xFF, r6h ROM:0000971A ROM:0000971A loc_971A: ; CODE XREF: sub_9698+76j ROM:0000971A ; sub_9698+7Ej ROM:0000971A cmp.b #0xFF, r6h ROM:0000971C bne loc_9732:8 ROM:0000971E sub.l er0, er0 ROM:00009720 mov.b r0l, @byte_FFF8EE:16 ROM:00009724 mov.l er0, @dword_FFF8EA:16 ROM:0000972A mov.b #1, r1l ROM:0000972C mov.b r1l, @byte_FFF8EF:16 ROM:00009730 bra loc_9748:8 ROM:00009732 ; --------------------------------------------------------------------------- ROM:00009732 ROM:00009732 loc_9732: ; CODE XREF: sub_9698+84j ROM:00009732 sub.b r0l, r0l ROM:00009734 mov.b r0l, @byte_FFF8EF:16 ROM:00009738 mov.w e4, r2 ROM:0000973A add.w #0xA, r2 ROM:0000973E mov.w r2, e0 ROM:00009740 mov.b r6h, r0l ROM:00009742 jsr sub_9342:24 ROM:00009746 exts.l er0 ROM:00009748 ROM:00009748 loc_9748: ; CODE XREF: sub_9698+98j ROM:00009748 pop.l er6 ROM:0000974C rts ROM:0000974C ; End of function sub_9698 ROM:0000974C ROM:0000974E ROM:0000974E ; =============== S U B R O U T I N E ======================================= ROM:0000974E ROM:0000974E ROM:0000974E clear_gCurSubstateY: ; CODE XREF: interactionHandlerHomeScreen+5Ap ROM:0000974E ; interactionHandlerHomeScreen+8Ep ... ROM:0000974E sub.b r0l, r0l ROM:00009750 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009750 ; gifted items view: this is item number that has focus and arrow ROM:00009750 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009750 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009750 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009754 rts ROM:00009754 ; End of function clear_gCurSubstateY ROM:00009754 ROM:00009756 ROM:00009756 ; =============== S U B R O U T I N E ======================================= ROM:00009756 ROM:00009756 ROM:00009756 interactionHAndlerMainMenu: ; CODE XREF: interactionHandler:case_0x01p ROM:00009756 subs #4, sp ROM:00009758 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00009758 ; gifted items view: this is item number that has focus and arrow ROM:00009758 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009758 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009758 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000975C beq loc_9774:8 ROM:0000975E mov.b #0xE, r0l ROM:00009760 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009760 ; // 0x02 - enter ROM:00009760 ; // 0x04 - left ROM:00009760 ; // 0x08 - right ROM:00009764 mov.b r0l, r0l ROM:00009766 beq out:16 ROM:0000976A sub.b r0l, r0l ROM:0000976C mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000976C ; gifted items view: this is item number that has focus and arrow ROM:0000976C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000976C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000976C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009770 jmp loc_9928:24 ROM:00009774 ; --------------------------------------------------------------------------- ROM:00009774 ROM:00009774 loc_9774: ; CODE XREF: interactionHAndlerMainMenu+6j ROM:00009774 mov.b #2, r0l ROM:00009776 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009776 ; // 0x02 - enter ROM:00009776 ; // 0x04 - left ROM:00009776 ; // 0x08 - right ROM:0000977A mov.b r0l, r0l ROM:0000977C beq loc_98BE:16 ROM:00009780 mov.w @RamCache_curWatts:16, r1 ROM:00009784 mov.w #ACTIVITY_WATT_COSTS, r6 ROM:00009788 mov.b @menuCurItem:16, r0l ROM:0000978C extu.w r0 ROM:0000978E add.w r6, r0 ROM:00009790 mov.b @er0, r0l ROM:00009792 extu.w r0 ROM:00009794 cmp.w r0, r1 ROM:00009796 bcc user_clicked_enter_go_do_thing_in_main_menu:8 ROM:00009798 ROM:00009798 not_enough_watts_show_error: ROM:00009798 mov.b #1, r0l ROM:0000979A jmp loc_98A8:24 ROM:0000979E ; --------------------------------------------------------------------------- ROM:0000979E ROM:0000979E user_clicked_enter_go_do_thing_in_main_menu: ROM:0000979E ; CODE XREF: interactionHAndlerMainMenu+40j ROM:0000979E mov.b @menuCurItem:16, r0l ROM:000097A2 cmp.b #5, r0l ROM:000097A4 bhi loc_98BE:16 ROM:000097A8 extu.w r0 ROM:000097AA add.w r0, r0 ROM:000097AC mov.w @(JUMPTABLE_97AC,er0), r0 ROM:000097B0 jmp @er0 ROM:000097B2 ; --------------------------------------------------------------------------- ROM:000097B2 ROM:000097B2 case__0: ; DATA XREF: ROM:JUMPTABLE_97ACo ROM:000097B2 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:000097B2 ; 0x04 - have walking poke ROM:000097B6 bld #2, r0l ROM:000097B8 bcs loc_97C0:8 ROM:000097BA mov.b #2, r0l ROM:000097BC jmp loc_98A8:24 ROM:000097C0 ; --------------------------------------------------------------------------- ROM:000097C0 ROM:000097C0 loc_97C0: ; CODE XREF: interactionHAndlerMainMenu+62j ROM:000097C0 mov.b @menuCurItem:16, r0l ROM:000097C4 extu.w r0 ROM:000097C6 add.w r6, r0 ROM:000097C8 mov.b @er0, r0l ROM:000097CA extu.w r0 ROM:000097CC cmp.w r0, r1 ROM:000097CE bcc loc_97D8:8 ROM:000097D0 sub.w r0, r0 ROM:000097D2 mov.w r0, @RamCache_curWatts:16 ROM:000097D6 bra loc_97EE:8 ROM:000097D8 ; --------------------------------------------------------------------------- ROM:000097D8 ROM:000097D8 loc_97D8: ; CODE XREF: interactionHAndlerMainMenu+78j ROM:000097D8 mov.b @menuCurItem:16, r0l ROM:000097DC extu.w r0 ROM:000097DE add.w r0, r6 ROM:000097E0 mov.b @er6, r0l ROM:000097E2 extu.w r0 ; how many watts does pokeradar cost ROM:000097E4 mov.w @RamCache_curWatts:16, e0 ROM:000097E8 sub.w r0, e0 ROM:000097EA mov.w e0, @RamCache_curWatts:16 ROM:000097EE ROM:000097EE loc_97EE: ; CODE XREF: interactionHAndlerMainMenu+80j ROM:000097EE mov.w #0x18, e1 ROM:000097F2 mov.w #RamCache_totalSteps, r1 ROM:000097F6 mov.l #0x2560156, er0 ROM:000097FC jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:000097FC ; ROM:000097FC ; see docs for readRedundantDataFromEeprom for format info ROM:00009800 mov.b #3, r0l ROM:00009802 jsr setCurrentlyActiveView:24 ROM:00009806 jsr goToPokeRadarMicroApp:24 ; pick pokemon we'll find, start game ROM:0000980A jmp loc_98BA:24 ROM:0000980E ; --------------------------------------------------------------------------- ROM:0000980E ROM:0000980E case__1: ; DATA XREF: ROM:0000BF04o ROM:0000980E mov.b @menuCurItem:16, r0l ROM:00009812 extu.w r0 ROM:00009814 add.w r6, r0 ROM:00009816 mov.b @er0, r0l ROM:00009818 extu.w r0 ROM:0000981A cmp.w r0, r1 ROM:0000981C bcc loc_9826:8 ROM:0000981E sub.w r0, r0 ROM:00009820 mov.w r0, @RamCache_curWatts:16 ROM:00009824 bra loc_983C:8 ROM:00009826 ; --------------------------------------------------------------------------- ROM:00009826 ROM:00009826 loc_9826: ; CODE XREF: interactionHAndlerMainMenu+C6j ROM:00009826 mov.b @menuCurItem:16, r0l ROM:0000982A extu.w r0 ROM:0000982C add.w r0, r6 ROM:0000982E mov.b @er6, r0l ROM:00009830 extu.w r0 ROM:00009832 mov.w @RamCache_curWatts:16, e0 ROM:00009836 sub.w r0, e0 ROM:00009838 mov.w e0, @RamCache_curWatts:16 ROM:0000983C ROM:0000983C loc_983C: ; CODE XREF: interactionHAndlerMainMenu+CEj ROM:0000983C mov.w #0x18, e1 ROM:00009840 mov.w #RamCache_totalSteps, r1 ROM:00009844 mov.l #0x2560156, er0 ROM:0000984A jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000984A ; ROM:0000984A ; see docs for readRedundantDataFromEeprom for format info ROM:0000984E jsr goToDowsingMicroApp:24 ROM:00009852 mov.b #2, r0l ROM:00009854 bra loc_98B6:8 ROM:00009856 ; --------------------------------------------------------------------------- ROM:00009856 ROM:00009856 case__2: ; DATA XREF: ROM:0000BF06o ROM:00009856 jsr goToConnectionMicroApp:24 ROM:0000985A jmp out:24 ROM:0000985E ; --------------------------------------------------------------------------- ROM:0000985E ROM:0000985E case__3: ; DATA XREF: ROM:0000BF08o ROM:0000985E mov.b #8, r0l ROM:00009860 jsr setCurrentlyActiveView:24 ROM:00009864 jsr goToTrainerCardMicroApp:24 ROM:00009868 bra loc_98BA:8 ROM:0000986A ; --------------------------------------------------------------------------- ROM:0000986A ROM:0000986A case__4: ; DATA XREF: ROM:0000BF0Ao ROM:0000986A mov.w r7, r6 ROM:0000986C mov.w r6, r0 ROM:0000986E jsr takeItemAndPokeInventory:24 ; (u16 inventory[2]) ROM:0000986E ; ROM:0000986E ; word[0]: ROM:0000986E ; 0x0001 - poke has joined empty walker on walk ROM:0000986E ; 0x0002 - have caught poke slot #1 full or have event item (XXX :seems wrong but is right) ROM:0000986E ; 0x0004 - have caught poke slot #2 full ROM:0000986E ; 0x0008 - have caught poke slot #3 full ROM:0000986E ; 0x0010 - have event poke slot full ROM:0000986E ; 0x0020 - haven "special map" slot full ROM:0000986E ; 0x0040 - have dowsed item slot #1 full ROM:0000986E ; 0x0080 - have dowsed item slot #2 full ROM:0000986E ; 0x0100 - have dowsed item slot #3 full ROM:0000986E ; ROM:0000986E ; word[1] ROM:0000986E ; one bit per giften item slot. 10 total ROM:0000986E ; ROM:0000986E ; ROM:0000986E ; ROM:00009872 mov.w @er6, r0 ROM:00009874 beq loc_988A:8 ROM:00009876 mov.w r0, @gCurSubstateA:16 ; Substate for various modes ROM:00009876 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009876 ; ItemScreenHandler: ROM:00009876 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009876 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009876 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009876 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009876 ; 0x0010 - light grey pokeball ROM:00009876 ; 0x0020 - tiny map icon ROM:00009876 ; 0x0040 - found item #0 (slot nonempty) ROM:00009876 ; 0x0080 - found item #1 (slot nonempty) ROM:00009876 ; 0x0100 - found item #2 (slot nonempty) ROM:00009876 ; 0x0200 - grey item icon ROM:00009876 ; ItemRXed - what was RXed ROM:00009876 ; 0 - event pokemon ROM:00009876 ; 1 - special route ROM:00009876 ; 2 - item ROM:00009876 ; 3 - special ROM:00009876 ; 4 - stamp: heart ROM:00009876 ; 5 - stamp: spade ROM:00009876 ; 6 - stamp: diamond ROM:00009876 ; 7 - stamp: club ROM:00009876 ; switch: ROM:00009876 ; zero - pokemon does ROM:00009876 ; nonzero - item needs to be switched ROM:00009876 ; item RXed: ROM:00009876 ; what sort of thing was RXed: item, map, route, etc ROM:0000987A mov.w @(2:16,er6), r6 ROM:0000987E mov.w r6, @gCurSubstateB:16 ; Substate: ROM:0000987E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009882 jsr sub_8CF4:24 ROM:00009886 mov.b #0xA, r0l ROM:00009888 bra loc_98B6:8 ROM:0000988A ; --------------------------------------------------------------------------- ROM:0000988A ROM:0000988A loc_988A: ; CODE XREF: interactionHAndlerMainMenu+11Ej ROM:0000988A mov.w @(2:16,er6), r0 ROM:0000988E beq loc_98A6:8 ROM:00009890 mov.w @er6, r0 ROM:00009892 mov.w r0, @gCurSubstateA:16 ; Substate for various modes ROM:00009892 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009892 ; ItemScreenHandler: ROM:00009892 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009892 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009892 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009892 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009892 ; 0x0010 - light grey pokeball ROM:00009892 ; 0x0020 - tiny map icon ROM:00009892 ; 0x0040 - found item #0 (slot nonempty) ROM:00009892 ; 0x0080 - found item #1 (slot nonempty) ROM:00009892 ; 0x0100 - found item #2 (slot nonempty) ROM:00009892 ; 0x0200 - grey item icon ROM:00009892 ; ItemRXed - what was RXed ROM:00009892 ; 0 - event pokemon ROM:00009892 ; 1 - special route ROM:00009892 ; 2 - item ROM:00009892 ; 3 - special ROM:00009892 ; 4 - stamp: heart ROM:00009892 ; 5 - stamp: spade ROM:00009892 ; 6 - stamp: diamond ROM:00009892 ; 7 - stamp: club ROM:00009892 ; switch: ROM:00009892 ; zero - pokemon does ROM:00009892 ; nonzero - item needs to be switched ROM:00009892 ; item RXed: ROM:00009892 ; what sort of thing was RXed: item, map, route, etc ROM:00009896 mov.w @(2:16,er6), r6 ROM:0000989A mov.w r6, @gCurSubstateB:16 ; Substate: ROM:0000989A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000989E jsr sub_9108:24 ROM:000098A2 mov.b #0xB, r0l ROM:000098A4 bra loc_98B6:8 ROM:000098A6 ; --------------------------------------------------------------------------- ROM:000098A6 ROM:000098A6 loc_98A6: ; CODE XREF: interactionHAndlerMainMenu+138j ROM:000098A6 mov.b #3, r0l ROM:000098A8 ROM:000098A8 loc_98A8: ; CODE XREF: interactionHAndlerMainMenu+44j ROM:000098A8 ; interactionHAndlerMainMenu+66j ROM:000098A8 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:000098A8 ; gifted items view: this is item number that has focus and arrow ROM:000098A8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:000098A8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:000098A8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:000098AC mov.b #4, r0l ROM:000098AE bra loc_9928:8 ROM:000098B0 ; --------------------------------------------------------------------------- ROM:000098B0 ROM:000098B0 case__5: ; DATA XREF: ROM:0000BF0Co ROM:000098B0 jsr sub_6C88:24 ROM:000098B4 mov.b #9, r0l ROM:000098B6 ROM:000098B6 loc_98B6: ; CODE XREF: interactionHAndlerMainMenu+FEj ROM:000098B6 ; interactionHAndlerMainMenu+132j ... ROM:000098B6 jsr setCurrentlyActiveView:24 ROM:000098BA ROM:000098BA loc_98BA: ; CODE XREF: interactionHAndlerMainMenu+B4j ROM:000098BA ; interactionHAndlerMainMenu+112j ROM:000098BA sub.b r0l, r0l ROM:000098BC bra loc_9928:8 ROM:000098BE ; --------------------------------------------------------------------------- ROM:000098BE ROM:000098BE loc_98BE: ; CODE XREF: interactionHAndlerMainMenu+26j ROM:000098BE ; interactionHAndlerMainMenu+4Ej ROM:000098BE mov.b #4, r0l ROM:000098C0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000098C0 ; // 0x02 - enter ROM:000098C0 ; // 0x04 - left ROM:000098C0 ; // 0x08 - right ROM:000098C4 mov.b r0l, r0l ROM:000098C6 beq loc_98EE:8 ROM:000098C8 mov.b @menuCurItem:16, r0l ROM:000098CC beq loc_9900:8 ROM:000098CE mov.b @menuCurItem:16, r0l ROM:000098D2 extu.w r0 ROM:000098D4 add.w #5, r0 ROM:000098D8 exts.l er0 ROM:000098DA mov.w #6, r1 ROM:000098DE divxs.w r1, er0 ROM:000098E2 mov.w e0, r0 ROM:000098E4 mov.b r0l, @menuCurItem:16 ROM:000098E8 mov.b #2, r0l ROM:000098EA jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:000098EE ROM:000098EE loc_98EE: ; CODE XREF: interactionHAndlerMainMenu+170j ROM:000098EE mov.b #8, r0l ROM:000098F0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:000098F0 ; // 0x02 - enter ROM:000098F0 ; // 0x04 - left ROM:000098F0 ; // 0x08 - right ROM:000098F4 mov.b r0l, r0l ROM:000098F6 beq out:8 ROM:000098F8 mov.b @menuCurItem:16, r0l ROM:000098FC cmp.b #5, r0l ROM:000098FE bne loc_990E:8 ROM:00009900 ROM:00009900 loc_9900: ; CODE XREF: interactionHAndlerMainMenu+176j ROM:00009900 jsr someStateVarShuffling:24 ROM:00009904 sub.b r0l, r0l ROM:00009906 jsr setCurrentlyActiveView:24 ROM:0000990A mov.b #1, r0l ROM:0000990C bra loc_9928:8 ROM:0000990E ; --------------------------------------------------------------------------- ROM:0000990E ROM:0000990E loc_990E: ; CODE XREF: interactionHAndlerMainMenu+1A8j ROM:0000990E mov.b @menuCurItem:16, r0l ROM:00009912 extu.w r0 ROM:00009914 inc.w #1, r0 ROM:00009916 exts.l er0 ROM:00009918 mov.w #6, r1 ROM:0000991C divxs.w r1, er0 ROM:00009920 mov.w e0, r0 ROM:00009922 mov.b r0l, @menuCurItem:16 ROM:00009926 mov.b #2, r0l ROM:00009928 ROM:00009928 loc_9928: ; CODE XREF: interactionHAndlerMainMenu+1Aj ROM:00009928 ; interactionHAndlerMainMenu+158j ... ROM:00009928 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000992C ROM:0000992C out: ; CODE XREF: interactionHAndlerMainMenu+10j ROM:0000992C ; interactionHAndlerMainMenu+104j ... ROM:0000992C adds #4, sp ROM:0000992E rts ROM:0000992E ; End of function interactionHAndlerMainMenu ROM:0000992E ROM:00009930 ROM:00009930 ; =============== S U B R O U T I N E ======================================= ROM:00009930 ROM:00009930 ROM:00009930 mainMenuDraw: ; CODE XREF: maybe_viewDoDisplay:case__0x01p ROM:00009930 mov.l #0x400280, er4 ROM:00009936 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000993A mov.w #0x140, e6 ROM:0000993E mov.w e6, r0 ROM:00009940 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009944 mov.w r0, r6 ROM:00009946 mov.w #0x80, r0 ; 'Ç' ROM:0000994A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000994E mov.w r0, r5 ROM:00009950 mov.b @menuCurItem:16, r3l ROM:00009954 extu.w r3 ROM:00009956 mulxu.w e6, er3 ROM:00009958 mov.w #0x690, r0 ROM:0000995C add.w r4, r0 ; 0x910 ROM:0000995E add.w r0, r3 ; 0x910 + menuCurItem * 0x140 ROM:00009960 mov.w e6, r1 ROM:00009962 mov.w r3, r0 ROM:00009964 mov.w r6, e0 ROM:00009966 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000996A mov.w r6, e0 ROM:0000996C mov.w #0x1050, r1 ROM:00009970 mov.w #8, r0 ROM:00009974 idx = e6 ROM:00009974 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009978 sub.w idx, idx ROM:0000997A ROM:0000997A loc_997A: ; CODE XREF: mainMenuDraw+FAj ROM:0000997A sub.w e0, e0 ROM:0000997C sub.b r1l, r1l ROM:0000997E ROM:0000997E loc_997E: ; CODE XREF: mainMenuDraw+5Aj ROM:0000997E mov.w r5, r0 ROM:00009980 add.w e0, r0 ROM:00009982 mov.b r1l, @er0 ROM:00009984 inc.w #1, e0 ROM:00009986 cmp.w #0x80, e0 ; 'Ç' ROM:0000998A bcs loc_997E:8 ROM:0000998C mov.b @menuCurItem:16, r0l ROM:00009990 extu.w r0 ROM:00009992 cmp.w r0, idx ROM:00009994 bne loc_99DC:8 ROM:00009996 mov.b @curUiFlags:16, r3l ; bits: ROM:00009996 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00009996 ; 0x02 - slower animation frame ROM:0000999A and.b #1, r3l ROM:0000999C extu.w r3 ROM:0000999E add.w #3, r3 ROM:000099A2 mov.w #0x10, e3 ROM:000099A6 mulxu.w e3, er3 ROM:000099A8 mov.w #0x278, r0 ; arrows ROM:000099AC add.w r4, r0 ROM:000099AE add.w r0, r3 ROM:000099B0 mov.w r3, r0 ; bouncing down arrow ROM:000099B2 mov.w #0x10, r1 ROM:000099B6 mov.w r6, e0 ROM:000099B8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000099BC mov.b #0x20, r0l ; ' ' ROM:000099BE push.w r0 ROM:000099C0 mov.b #0x10, r0l ROM:000099C2 push.w r0 ROM:000099C4 mov.w idx, r1 ROM:000099C6 mov.b @(MAIN_MENU_ITEM_POSITIONS_Y_RELATIVE,er1), r1h ; not from very top of screen ROM:000099CA add.b #-8, r1h ROM:000099CC mov.w r5, e1 ROM:000099CE mov.b #4, r1l ROM:000099D0 mov.w r6, e0 ROM:000099D2 mov.b #8, r0h ROM:000099D4 mov.b r0h, r0l ROM:000099D6 jsr drawImageToBuffer:24 ; used to composite images before drawing ROM:000099D6 ; ( ROM:000099D6 ; r0l = imgW ROM:000099D6 ; r0h = imgH ROM:000099D6 ; e0 = imageDatPtrInRam ROM:000099D6 ; r1l = x ROM:000099D6 ; r1h = y ROM:000099D6 ; e1 = dstBuffer ROM:000099D6 ; [sp] = bufferWidth ROM:000099D6 ; [sp,2] = bufferHeight ROM:000099D6 ; ) ROM:000099DA adds #4, sp ROM:000099DC ROM:000099DC loc_99DC: ; CODE XREF: mainMenuDraw+64j ROM:000099DC mov.w idx, r3 ROM:000099DE mov.w #0x40, e3 ; '@' ROM:000099E2 mulxu.w e3, er3 ROM:000099E4 mov.w #0xE10, r0 ROM:000099E8 add.w r4, r0 ROM:000099EA add.w r0, r3 ROM:000099EC mov.w r3, r0 ROM:000099EE mov.w e4, r1 ROM:000099F0 mov.w r6, e0 ROM:000099F2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:000099F6 mov.b #0x20, r0l ; ' ' ROM:000099F8 push.w r0 ROM:000099FA mov.b #0x10, r0l ROM:000099FC push.w r0 ROM:000099FE mov.w idx, r1 ROM:00009A00 mov.b @(MAIN_MENU_ITEM_POSITIONS_Y_RELATIVE,er1), r1h ; not from very top of screen ROM:00009A04 mov.w r5, e1 ROM:00009A06 sub.b r1l, r1l ROM:00009A08 mov.w r6, e0 ROM:00009A0A mov.b r0l, r0h ROM:00009A0C jsr drawImageToBuffer:24 ; used to composite images before drawing ROM:00009A0C ; ( ROM:00009A0C ; r0l = imgW ROM:00009A0C ; r0h = imgH ROM:00009A0C ; e0 = imageDatPtrInRam ROM:00009A0C ; r1l = x ROM:00009A0C ; r1h = y ROM:00009A0C ; e1 = dstBuffer ROM:00009A0C ; [sp] = bufferWidth ROM:00009A0C ; [sp,2] = bufferHeight ROM:00009A0C ; ) ROM:00009A10 adds #4, sp ROM:00009A12 mov.w idx, r0 ROM:00009A14 mov.b #0x10, r0h ROM:00009A16 mulxu.b r0h, r0 ROM:00009A18 mov.w r5, e0 ROM:00009A1A mov.w #0x2010, r1 ROM:00009A1E mov.b #0x10, r0h ROM:00009A20 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009A24 inc.w #1, idx ROM:00009A26 cmp.w #6, idx ROM:00009A2A blt loc_997A:16 ROM:00009A2E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:00009A2E ; gifted items view: this is item number that has focus and arrow ROM:00009A2E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009A2E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009A2E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009A32 beq loc_9A4A:8 ROM:00009A34 cmp.b #1, r0l ROM:00009A36 beq loc_9ADC:16 ROM:00009A3A cmp.b #2, r0l ROM:00009A3C beq loc_9AE6:16 ROM:00009A40 cmp.b #3, r0l ROM:00009A42 bne loc_9AFC:16 ROM:00009A46 jmp loc_9AF0:24 ROM:00009A4A ; --------------------------------------------------------------------------- ROM:00009A4A ROM:00009A4A loc_9A4A: ; CODE XREF: mainMenuDraw+102j ROM:00009A4A sub.b r0l, r0l ROM:00009A4C push.w r0 ROM:00009A4E mov.w @RamCache_curWatts:16, r1 ROM:00009A52 extu.l er1 ROM:00009A54 mov.w #0x3048, r0 ROM:00009A58 jsr drawNumberOnscreen:24 ; ( ROM:00009A58 ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:00009A58 ; r0h = y ROM:00009A58 ; er1 = number ROM:00009A58 ; [sp] = bool addOverline ROM:00009A58 ; ) ROM:00009A5C adds #2, sp ROM:00009A5E mov.b @menuCurItem:16, r0l ROM:00009A62 beq loc_9A6A:8 ROM:00009A64 cmp.b #1, r0l ROM:00009A66 bne loc_9A86:8 ROM:00009A68 bra loc_9A74:8 ROM:00009A6A ; --------------------------------------------------------------------------- ROM:00009A6A ROM:00009A6A loc_9A6A: ; CODE XREF: mainMenuDraw+132j ROM:00009A6A sub.b r0l, r0l ROM:00009A6C push.w r0 ROM:00009A6E sub.l er1, er1 ROM:00009A70 mov.b #0xA, r1l ROM:00009A72 bra loc_9A7C:8 ROM:00009A74 ; --------------------------------------------------------------------------- ROM:00009A74 ROM:00009A74 loc_9A74: ; CODE XREF: mainMenuDraw+138j ROM:00009A74 sub.b r0l, r0l ROM:00009A76 push.w r0 ROM:00009A78 sub.l er1, er1 ROM:00009A7A mov.b #3, r1l ROM:00009A7C ROM:00009A7C loc_9A7C: ; CODE XREF: mainMenuDraw+142j ROM:00009A7C mov.w #0x3008, r0 ROM:00009A80 jsr drawNumberOnscreen:24 ; ( ROM:00009A80 ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:00009A80 ; r0h = y ROM:00009A80 ; er1 = number ROM:00009A80 ; [sp] = bool addOverline ROM:00009A80 ; ) ROM:00009A84 adds #2, sp ROM:00009A86 ROM:00009A86 loc_9A86: ; CODE XREF: mainMenuDraw+136j ROM:00009A86 mov.w #0x1A0, r5 ROM:00009A8A add.w r4, r5 ROM:00009A8C mov.w r5, r0 ROM:00009A8E mov.w e4, r1 ROM:00009A90 mov.w r6, e0 ROM:00009A92 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009A96 mov.w r6, e0 ROM:00009A98 mov.w #0x1010, r1 ROM:00009A9C mov.w #0x3050, r0 ROM:00009AA0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009AA4 mov.b @menuCurItem:16, r0l ROM:00009AA8 cmp.b #2, r0l ROM:00009AAA bcc loc_9AFC:8 ROM:00009AAC mov.w r6, e0 ROM:00009AAE mov.b #0x10, r1h ROM:00009AB0 mov.b r1h, r1l ROM:00009AB2 mov.w #0x3018, r0 ROM:00009AB6 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009ABA mov.w #0x180, r5 ROM:00009ABE add.w r4, r5 ROM:00009AC0 mov.w r5, r0 ROM:00009AC2 mov.w #0x20, r1 ; ' ' ROM:00009AC6 mov.w r6, e0 ROM:00009AC8 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009ACC mov.w r6, e0 ROM:00009ACE mov.w #0x1008, r1 ROM:00009AD2 mov.w #0x3028, r0 ROM:00009AD6 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009ADA bra loc_9AFC:8 ROM:00009ADC ; --------------------------------------------------------------------------- ROM:00009ADC ROM:00009ADC loc_9ADC: ; CODE XREF: mainMenuDraw+106j ROM:00009ADC mov.w #0x10F, r1 ROM:00009AE0 mov.w #0x1430, r0 ; "Need more Watts." ROM:00009AE4 bra loc_9AF8:8 ROM:00009AE6 ; --------------------------------------------------------------------------- ROM:00009AE6 ROM:00009AE6 loc_9AE6: ; CODE XREF: mainMenuDraw+10Cj ROM:00009AE6 mov.w #0x10F, r1 ROM:00009AEA mov.w #0x1530, r0 ; "No Pokemon held!" ROM:00009AEE bra loc_9AF8:8 ROM:00009AF0 ; --------------------------------------------------------------------------- ROM:00009AF0 ROM:00009AF0 loc_9AF0: ; CODE XREF: mainMenuDraw+116j ROM:00009AF0 mov.w #0x10F, r1 ROM:00009AF4 mov.w #0x1630, r0 ; "Nothing held!" ROM:00009AF8 ROM:00009AF8 loc_9AF8: ; CODE XREF: mainMenuDraw+1B4j ROM:00009AF8 ; mainMenuDraw+1BEj ROM:00009AF8 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:00009AF8 ; ROM:00009AF8 ; //always drawn at x = 0 ROM:00009AF8 ; ROM:00009AFC ROM:00009AFC loc_9AFC: ; CODE XREF: mainMenuDraw+112j ROM:00009AFC ; mainMenuDraw+17Aj ... ROM:00009AFC mov.w #0x338, r5 ROM:00009B00 add.w r4, r5 ROM:00009B02 mov.w r5, r0 ROM:00009B04 mov.w e4, r1 ROM:00009B06 mov.w r6, e0 ROM:00009B08 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009B0C mov.w r6, e0 ROM:00009B0E mov.w #0x1008, r1 ROM:00009B12 sub.w r0, r0 ROM:00009B14 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009B18 add.w #0x20, r6 ; ' ' ROM:00009B1C mov.w r6, e0 ROM:00009B1E mov.w #0x1008, r1 ROM:00009B22 mov.w #0x58, r0 ; 'X' ROM:00009B26 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009B2A mov.w #0x58, r0 ; 'X' ROM:00009B2E jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:00009B32 rts ROM:00009B32 ; End of function mainMenuDraw ROM:00009B32 ROM:00009B34 ROM:00009B34 ; =============== S U B R O U T I N E ======================================= ROM:00009B34 ROM:00009B34 ROM:00009B34 maybeConfigureKeys: ; CODE XREF: ENTRY+C8p ROM:00009B34 sub.b r0l, r0l ROM:00009B36 mov.b r0l, @byte_FFF798:16 ROM:00009B3A mov.b r0l, @byte_FFF799:16 ROM:00009B3E mov.b r0l, @CUR_KEYS:16 ROM:00009B42 mov.b r0l, @byte_FFF79B:16 ROM:00009B46 ldc.b #0x80, ccr ; 'Ç' ROM:00009B48 mov.b @IO_PFCR:16, r0l ROM:00009B4C and.b #0xFC, r0l ROM:00009B4E mov.b r0l, @IO_PFCR:16 ROM:00009B52 bset #0, @IRQ_IEGR:8 ROM:00009B56 bclr #0, @IRQ_IRR1:8 ROM:00009B5A bset #0, @IRQ_IENR1:8 ROM:00009B5E mov.b @IO_PFCR:16, r0l ROM:00009B62 and.b #0xF3, r0l ROM:00009B64 mov.b r0l, @IO_PFCR:16 ROM:00009B68 bset #1, @IRQ_IEGR:8 ROM:00009B6C bclr #1, @IRQ_IRR1:8 ROM:00009B70 bset #1, @IRQ_IENR1:8 ROM:00009B74 bset #5, @IO_PDRB:8 ROM:00009B78 bset #4, @IO_PDR8:8 ROM:00009B7C bclr #4, @IO_PCR8:8 ROM:00009B80 ldc.b #0, ccr ROM:00009B82 rts ROM:00009B82 ; End of function maybeConfigureKeys ROM:00009B82 ROM:00009B84 ROM:00009B84 ; =============== S U B R O U T I N E ======================================= ROM:00009B84 ROM:00009B84 ROM:00009B84 likelyKeyDebounceRoutine: ; CODE XREF: sleepModeEventLoop+1Cp ROM:00009B84 ; normalModeEventLoop+1Cp ROM:00009B84 sub.b r0l, r0l ROM:00009B86 mov.b r0l, @byte_FFF798:16 ROM:00009B8A bld #0, @IO_PDRB:8 ROM:00009B8E bcc loc_9BAA:8 ROM:00009B90 mov.w #byte_FFF798, r0 ROM:00009B94 bset #1, @er0 ROM:00009B98 mov.b @byte_FFF7BB:16, r0l ROM:00009B9C beq loc_9BAE:8 ROM:00009B9E mov.b @byte_FFF79B:16, r0l ROM:00009BA2 inc.b r0l ROM:00009BA4 mov.b r0l, @byte_FFF79B:16 ROM:00009BA8 bra loc_9BAE:8 ROM:00009BAA ; --------------------------------------------------------------------------- ROM:00009BAA ROM:00009BAA loc_9BAA: ; CODE XREF: likelyKeyDebounceRoutine+Aj ROM:00009BAA mov.b r0l, @byte_FFF79B:16 ROM:00009BAE ROM:00009BAE loc_9BAE: ; CODE XREF: likelyKeyDebounceRoutine+18j ROM:00009BAE ; likelyKeyDebounceRoutine+24j ROM:00009BAE mov.b @common_bit_flags:16, r0l ROM:00009BB2 bld #3, r0l ROM:00009BB4 bcc loc_9BC6:8 ROM:00009BB6 mov.w #byte_FFF798, r0 ROM:00009BBA bset #1, @er0 ROM:00009BBE mov.w #common_bit_flags, r0 ROM:00009BC2 bclr #3, @er0 ROM:00009BC6 ROM:00009BC6 loc_9BC6: ; CODE XREF: likelyKeyDebounceRoutine+30j ROM:00009BC6 bld #2, @IO_PDRB:8 ROM:00009BCA bcc loc_9BD4:8 ROM:00009BCC mov.w #byte_FFF798, r0 ROM:00009BD0 bset #2, @er0 ROM:00009BD4 ROM:00009BD4 loc_9BD4: ; CODE XREF: likelyKeyDebounceRoutine+46j ROM:00009BD4 bld #4, @IO_PDRB:8 ROM:00009BD8 bcc loc_9BE2:8 ROM:00009BDA mov.w #byte_FFF798, r0 ROM:00009BDE bset #3, @er0 ROM:00009BE2 ROM:00009BE2 loc_9BE2: ; CODE XREF: likelyKeyDebounceRoutine+54j ROM:00009BE2 mov.b @byte_FFF798:16, r0l ROM:00009BE6 mov.b @byte_FFF799:16, r0h ROM:00009BEA xor.b r0h, r0l ROM:00009BEC mov.b @byte_FFF798:16, r0h ROM:00009BF0 and.b r0l, r0h ROM:00009BF2 mov.b r0h, @CUR_KEYS:16 ROM:00009BF6 mov.b @byte_FFF798:16, r0l ROM:00009BFA mov.b r0l, @byte_FFF799:16 ROM:00009BFE mov.b @CUR_KEYS:16, r0l ROM:00009C02 beq loc_9C20:8 ROM:00009C04 mov.b #0x5A, r0l ; 'Z' ROM:00009C06 mov.b r0l, @byte_FFF7AF:16 ROM:00009C0A sub.b r0l, r0l ROM:00009C0C mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:00009C10 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00009C10 ; 0x04 - have walking poke ROM:00009C14 and.b #0x18, r0l ROM:00009C16 cmp.b #0x10, r0l ROM:00009C18 beq loc_9C20:8 ROM:00009C1A sub.b r0l, r0l ROM:00009C1C mov.b r0l, @CUR_KEYS:16 ROM:00009C20 ROM:00009C20 loc_9C20: ; CODE XREF: likelyKeyDebounceRoutine+7Ej ROM:00009C20 ; likelyKeyDebounceRoutine+94j ROM:00009C20 mov.b @byte_FFF79B:16, r0l ROM:00009C24 cmp.b #8, r0l ROM:00009C26 bcs locret_9C3E:8 ROM:00009C28 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:00009C28 ; 0x04 - have walking poke ROM:00009C2C and.b #0x18, r0l ROM:00009C2E cmp.b #0x10, r0l ROM:00009C30 beq locret_9C3E:8 ROM:00009C32 jsr sub_A29C:24 ROM:00009C36 mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:00009C36 ; 0x04 - have walking poke ROM:00009C3A bset #0, @er0 ROM:00009C3E ROM:00009C3E locret_9C3E: ; CODE XREF: likelyKeyDebounceRoutine+A2j ROM:00009C3E ; likelyKeyDebounceRoutine+ACj ROM:00009C3E rts ROM:00009C3E ; End of function likelyKeyDebounceRoutine ROM:00009C3E ROM:00009C40 ROM:00009C40 ; =============== S U B R O U T I N E ======================================= ROM:00009C40 ROM:00009C40 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009C40 ; // 0x02 - enter ROM:00009C40 ; // 0x04 - left ROM:00009C40 ; // 0x08 - right ROM:00009C40 ROM:00009C40 checkKeyStates: ; CODE XREF: sub_2972+7Cp ROM:00009C40 ; sub_2972+A6p ... ROM:00009C40 mov.b @CUR_KEYS:16, r0h ROM:00009C44 and.b r0h, r0l ROM:00009C46 rts ROM:00009C46 ; End of function checkKeyStates ROM:00009C46 ROM:00009C48 ROM:00009C48 ; =============== S U B R O U T I N E ======================================= ROM:00009C48 ROM:00009C48 ; considers special event route rules ROM:00009C48 ROM:00009C48 pickPokemonToEncounter: ; CODE XREF: goToPokeRadarMicroAppp ROM:00009C48 sub.b r0l, r0l ROM:00009C4A mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009C4A ; gifted items view: this is item number that has focus and arrow ROM:00009C4A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009C4A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009C4A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009C4E mov.b @RamCache_settingsByte:16, r0l ROM:00009C52 bld #0, r0l ROM:00009C54 bcc got_unlucky:16 ROM:00009C58 mov.w #0xBF7A, r0 ROM:00009C5C jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00009C60 mov.b r0l, r6l ROM:00009C62 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00009C66 mov.w #0x68, r0 ; 'h' ROM:00009C6A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009C6E mov.b r6l, r1l ROM:00009C70 jsr checkForWhetherWeveParticipatedInAGivenEvent:24 ; (r0 = tmpBuf[0x68], r1l = evtIdx) -> r0l bool ROM:00009C70 ; ROM:00009C70 ; always false for index 0 ROM:00009C74 mov.b r0l, r0l ROM:00009C76 bne got_unlucky:8 ROM:00009C78 mov.w #0xB800, r0 ROM:00009C7C jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:00009C80 btst #5, r0l ROM:00009C82 bne got_unlucky:8 ROM:00009C84 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00009C88 mov.w #4, r0 ROM:00009C8C jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009C90 mov.w r0, r6 ROM:00009C92 mov.w r0, e0 ROM:00009C94 mov.w #0xBF44, r0 ROM:00009C98 mov.w #4, r1 ROM:00009C9C jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009CA0 mov.w @er6, e6 ROM:00009CA2 mov.w e6, r0 ROM:00009CA4 mov.b r0h, r0l ; swap16 ROM:00009CA6 sub.b r0h, r0h ROM:00009CA8 mov.w e6, r1 ROM:00009CAA mov.b r1l, r1h ROM:00009CAC sub.b r1l, r1l ROM:00009CAE or.w r1, r0 ROM:00009CB0 extu.l er0 ROM:00009CB2 mov.l @stepCountTodaySoFar:16, er1 ROM:00009CB8 cmp.l er0, er1 ROM:00009CBA bcs got_unlucky:8 ; not enough steps ROM:00009CBC jsr rand:24 ROM:00009CC0 sub.l er1, er1 ROM:00009CC2 mov.b #0x64, r1l ; 'd' ROM:00009CC4 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00009CC8 sub.l er0, er0 ROM:00009CCA mov.b @(2:16,er6), r0l ROM:00009CCE cmp.l er1, er0 ROM:00009CD0 bls got_unlucky:8 ROM:00009CD2 ROM:00009CD2 encountered_event_poke: ROM:00009CD2 mov.b #4, r0l ROM:00009CD4 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009CD4 ; gifted items view: this is item number that has focus and arrow ROM:00009CD4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009CD4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009CD4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009CD8 jsr rand:24 ROM:00009CDC shlr.w r0 ROM:00009CDE shlr.w r0 ROM:00009CE0 shlr.w r0 ROM:00009CE2 and.b #1, r0l ; 3 or 4 ROM:00009CE4 add.b #3, r0l ; rare or event poke ROM:00009CE6 jmp loc_9D8C:24 ROM:00009CEA ; --------------------------------------------------------------------------- ROM:00009CEA ROM:00009CEA got_unlucky: ; CODE XREF: pickPokemonToEncounter+Cj ROM:00009CEA ; pickPokemonToEncounter+2Ej ... ROM:00009CEA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00009CEE mov.w #0x30, r0 ; '0' ROM:00009CF2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009CF6 mov.w r0, e0 ROM:00009CF8 mov.w #0xCE8C, r0 ; read and not used? ROM:00009CFC mov.w #0x30, r1 ; '0' ROM:00009D00 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009D04 jsr rand:24 ROM:00009D08 sub.l er1, er1 ROM:00009D0A mov.b #100, r1l ROM:00009D0C jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:00009D10 mov.b r1l, r6h ROM:00009D12 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00009D16 mov.w #0xBE, r0 ; '+' ROM:00009D1A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009D1E mov.w r0, r5 ROM:00009D20 mov.w r0, e0 ROM:00009D22 mov.w #0x8F00, r0 ROM:00009D26 mov.w #0xBE, r1 ; '+' ROM:00009D2A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009D2E sub.b r6l, r6l ROM:00009D30 bra loc_9D74:8 ROM:00009D32 ; --------------------------------------------------------------------------- ROM:00009D32 ROM:00009D32 loc_9D32: ; CODE XREF: pickPokemonToEncounter+12Ej ROM:00009D32 mov.b r6l, r0l ROM:00009D34 extu.w r0 ROM:00009D36 mov.w r0, e6 ROM:00009D38 shll.w r0 ROM:00009D3A mov.w #0x82, r1 ; 'é' ; steps required to encounter a given pokemon ROM:00009D3E jsr checkIfPokeOrItemCanBeEncountered:24 ; (r0 = idx0, r1 = idx1, r5 = ptr) //load LEu16 at ptr[idx0 + idx1], compare with current step counter ROM:00009D42 bcs loc_9D72:8 ROM:00009D44 mov.w #0x88, r0 ; 'ê' ROM:00009D48 add.w r5, r0 ROM:00009D4A add.w e6, r0 ROM:00009D4C mov.b @er0, r0l ROM:00009D4E cmp.b r0l, r6h ROM:00009D50 bcc loc_9D72:8 ROM:00009D52 mov.b r6l, r0l ROM:00009D54 add.b #1, r0l ROM:00009D56 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009D56 ; gifted items view: this is item number that has focus and arrow ROM:00009D56 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009D56 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009D56 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009D5A jsr rand:24 ROM:00009D5E shlr.w r0 ROM:00009D60 shlr.w r0 ROM:00009D62 shlr.w r0 ROM:00009D64 and.b #1, r0l ROM:00009D66 neg.b r6l ROM:00009D68 add.b r0l, r6l ROM:00009D6A add.b #3, r6l ROM:00009D6C mov.b r6l, @gCurSubstateB:16 ; Substate: ROM:00009D6C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009D70 bra out_return:8 ROM:00009D72 ; --------------------------------------------------------------------------- ROM:00009D72 ROM:00009D72 loc_9D72: ; CODE XREF: pickPokemonToEncounter+FAj ROM:00009D72 ; pickPokemonToEncounter+108j ROM:00009D72 inc.b r6l ROM:00009D74 ROM:00009D74 loc_9D74: ; CODE XREF: pickPokemonToEncounter+E8j ROM:00009D74 cmp.b #3, r6l ROM:00009D76 bcs loc_9D32:8 ROM:00009D78 ROM:00009D78 no_poke_matches_cur_status: ; ni this case pick randomly 1 or 2 ROM:00009D78 mov.b #3, r0l ROM:00009D7A mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:00009D7A ; gifted items view: this is item number that has focus and arrow ROM:00009D7A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:00009D7A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:00009D7A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:00009D7E jsr rand:24 ROM:00009D82 shlr.w r0 ROM:00009D84 shlr.w r0 ROM:00009D86 shlr.w r0 ROM:00009D88 and.b #1, r0l ROM:00009D8A add.b #1, r0l ; 1 or 2 ROM:00009D8C ROM:00009D8C loc_9D8C: ; CODE XREF: pickPokemonToEncounter+9Ej ROM:00009D8C mov.b r0l, @gCurSubstateB:16 ; Substate: ROM:00009D8C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009D90 ROM:00009D90 out_return: ; CODE XREF: pickPokemonToEncounter+128j ROM:00009D90 rts ROM:00009D90 ; End of function pickPokemonToEncounter ROM:00009D90 ROM:00009D92 ROM:00009D92 ; =============== S U B R O U T I N E ======================================= ROM:00009D92 ROM:00009D92 ; pick pokemon we'll find, start game ROM:00009D92 ROM:00009D92 goToPokeRadarMicroApp: ; CODE XREF: interactionHAndlerMainMenu+B0p ROM:00009D92 jsr pickPokemonToEncounter:24 ; considers special event route rules ROM:00009D96 sub.b r0l, r0l ROM:00009D98 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00009D98 ; battle: ROM:00009D98 ; 0 - battle opening animation ROM:00009D98 ; 1 - "XYZ appeared" message ROM:00009D98 ; 2 - "attack evade catch" directions shown ROM:00009D98 ; 3 - our action taken. details in gCurSubstateF ROM:00009D98 ; 4 - poke action taken. details in gCurSubstateF ROM:00009D98 ; 5 - "was too strong" ROM:00009D98 ; 6 - we lost ROM:00009D98 ; 7 - fled ROM:00009D98 ; 8 - staredown ROM:00009D98 ; 9 - almost had it ROM:00009D98 ; 10 - "threw a pokeball" ROM:00009D98 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00009D98 ; 12, 14 - pokeball flying ROM:00009D98 ; 13 - pokeball flying ROM:00009D98 ; 15 - catch animation plays ROM:00009D98 ; 16 - caught! ROM:00009D98 ; switcht: ROM:00009D98 ; cur slected poke name ROM:00009D9C mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00009D9C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009D9C ; ItemScreenHandler: ROM:00009D9C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009D9C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009D9C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009D9C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009D9C ; 0x0010 - light grey pokeball ROM:00009D9C ; 0x0020 - tiny map icon ROM:00009D9C ; 0x0040 - found item #0 (slot nonempty) ROM:00009D9C ; 0x0080 - found item #1 (slot nonempty) ROM:00009D9C ; 0x0100 - found item #2 (slot nonempty) ROM:00009D9C ; 0x0200 - grey item icon ROM:00009D9C ; ItemRXed - what was RXed ROM:00009D9C ; 0 - event pokemon ROM:00009D9C ; 1 - special route ROM:00009D9C ; 2 - item ROM:00009D9C ; 3 - special ROM:00009D9C ; 4 - stamp: heart ROM:00009D9C ; 5 - stamp: spade ROM:00009D9C ; 6 - stamp: diamond ROM:00009D9C ; 7 - stamp: club ROM:00009D9C ; switch: ROM:00009D9C ; zero - pokemon does ROM:00009D9C ; nonzero - item needs to be switched ROM:00009D9C ; item RXed: ROM:00009D9C ; what sort of thing was RXed: item, map, route, etc ROM:00009DA0 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00009DA0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009DA0 ; ItemScreenHandler: ROM:00009DA0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009DA0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009DA0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009DA0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009DA0 ; 0x0010 - light grey pokeball ROM:00009DA0 ; 0x0020 - tiny map icon ROM:00009DA0 ; 0x0040 - found item #0 (slot nonempty) ROM:00009DA0 ; 0x0080 - found item #1 (slot nonempty) ROM:00009DA0 ; 0x0100 - found item #2 (slot nonempty) ROM:00009DA0 ; 0x0200 - grey item icon ROM:00009DA0 ; ItemRXed - what was RXed ROM:00009DA0 ; 0 - event pokemon ROM:00009DA0 ; 1 - special route ROM:00009DA0 ; 2 - item ROM:00009DA0 ; 3 - special ROM:00009DA0 ; 4 - stamp: heart ROM:00009DA0 ; 5 - stamp: spade ROM:00009DA0 ; 6 - stamp: diamond ROM:00009DA0 ; 7 - stamp: club ROM:00009DA0 ; switch: ROM:00009DA0 ; zero - pokemon does ROM:00009DA0 ; nonzero - item needs to be switched ROM:00009DA0 ; item RXed: ROM:00009DA0 ; what sort of thing was RXed: item, map, route, etc ROM:00009DA4 mov.b #5, r0h ROM:00009DA6 mov.b r0h, @gCurSubstateC:16 ROM:00009DAA mov.b r0l, r1l ROM:00009DAC extu.w r1 ROM:00009DAE mov.b @(byte_BF1A,er1), r1l ROM:00009DB2 mov.b r1l, @gCurSubstateD:16 ROM:00009DB6 jsr rand:24 ROM:00009DBA shll.w r0 ROM:00009DBC shll.w r0 ROM:00009DBE shll.w r0 ROM:00009DC0 and.b #3, r0h ROM:00009DC2 mov.b r0h, @gCurSubstateB+1:16 ; Substate: ROM:00009DC2 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009DC6 sub.b r0l, r0l ROM:00009DC8 mov.b r0l, @gCurSubstateE:16 ; ubstate for various modes ROM:00009DC8 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009DCC rts ROM:00009DCC ; End of function goToPokeRadarMicroApp ROM:00009DCC ROM:00009DCE ROM:00009DCE ; =============== S U B R O U T I N E ======================================= ROM:00009DCE ROM:00009DCE ROM:00009DCE sub_9DCE: ; CODE XREF: interactionHandlerPokeRadar:loc_9E92p ROM:00009DCE mov.b #4, r0l ROM:00009DD0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009DD0 ; // 0x02 - enter ROM:00009DD0 ; // 0x04 - left ROM:00009DD0 ; // 0x08 - right ROM:00009DD4 mov.b r0l, r0l ROM:00009DD6 beq loc_9DEA:8 ROM:00009DD8 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00009DD8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009DD8 ; ItemScreenHandler: ROM:00009DD8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009DD8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009DD8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009DD8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009DD8 ; 0x0010 - light grey pokeball ROM:00009DD8 ; 0x0020 - tiny map icon ROM:00009DD8 ; 0x0040 - found item #0 (slot nonempty) ROM:00009DD8 ; 0x0080 - found item #1 (slot nonempty) ROM:00009DD8 ; 0x0100 - found item #2 (slot nonempty) ROM:00009DD8 ; 0x0200 - grey item icon ROM:00009DD8 ; ItemRXed - what was RXed ROM:00009DD8 ; 0 - event pokemon ROM:00009DD8 ; 1 - special route ROM:00009DD8 ; 2 - item ROM:00009DD8 ; 3 - special ROM:00009DD8 ; 4 - stamp: heart ROM:00009DD8 ; 5 - stamp: spade ROM:00009DD8 ; 6 - stamp: diamond ROM:00009DD8 ; 7 - stamp: club ROM:00009DD8 ; switch: ROM:00009DD8 ; zero - pokemon does ROM:00009DD8 ; nonzero - item needs to be switched ROM:00009DD8 ; item RXed: ROM:00009DD8 ; what sort of thing was RXed: item, map, route, etc ROM:00009DDC add.b #3, r0l ROM:00009DDE and.b #3, r0l ROM:00009DE0 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00009DE0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009DE0 ; ItemScreenHandler: ROM:00009DE0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009DE0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009DE0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009DE0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009DE0 ; 0x0010 - light grey pokeball ROM:00009DE0 ; 0x0020 - tiny map icon ROM:00009DE0 ; 0x0040 - found item #0 (slot nonempty) ROM:00009DE0 ; 0x0080 - found item #1 (slot nonempty) ROM:00009DE0 ; 0x0100 - found item #2 (slot nonempty) ROM:00009DE0 ; 0x0200 - grey item icon ROM:00009DE0 ; ItemRXed - what was RXed ROM:00009DE0 ; 0 - event pokemon ROM:00009DE0 ; 1 - special route ROM:00009DE0 ; 2 - item ROM:00009DE0 ; 3 - special ROM:00009DE0 ; 4 - stamp: heart ROM:00009DE0 ; 5 - stamp: spade ROM:00009DE0 ; 6 - stamp: diamond ROM:00009DE0 ; 7 - stamp: club ROM:00009DE0 ; switch: ROM:00009DE0 ; zero - pokemon does ROM:00009DE0 ; nonzero - item needs to be switched ROM:00009DE0 ; item RXed: ROM:00009DE0 ; what sort of thing was RXed: item, map, route, etc ROM:00009DE4 mov.b #2, r0l ROM:00009DE6 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009DEA ROM:00009DEA loc_9DEA: ; CODE XREF: sub_9DCE+8j ROM:00009DEA mov.b #8, r0l ROM:00009DEC jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009DEC ; // 0x02 - enter ROM:00009DEC ; // 0x04 - left ROM:00009DEC ; // 0x08 - right ROM:00009DF0 mov.b r0l, r0l ROM:00009DF2 beq loc_9E06:8 ROM:00009DF4 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00009DF4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009DF4 ; ItemScreenHandler: ROM:00009DF4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009DF4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009DF4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009DF4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009DF4 ; 0x0010 - light grey pokeball ROM:00009DF4 ; 0x0020 - tiny map icon ROM:00009DF4 ; 0x0040 - found item #0 (slot nonempty) ROM:00009DF4 ; 0x0080 - found item #1 (slot nonempty) ROM:00009DF4 ; 0x0100 - found item #2 (slot nonempty) ROM:00009DF4 ; 0x0200 - grey item icon ROM:00009DF4 ; ItemRXed - what was RXed ROM:00009DF4 ; 0 - event pokemon ROM:00009DF4 ; 1 - special route ROM:00009DF4 ; 2 - item ROM:00009DF4 ; 3 - special ROM:00009DF4 ; 4 - stamp: heart ROM:00009DF4 ; 5 - stamp: spade ROM:00009DF4 ; 6 - stamp: diamond ROM:00009DF4 ; 7 - stamp: club ROM:00009DF4 ; switch: ROM:00009DF4 ; zero - pokemon does ROM:00009DF4 ; nonzero - item needs to be switched ROM:00009DF4 ; item RXed: ROM:00009DF4 ; what sort of thing was RXed: item, map, route, etc ROM:00009DF8 add.b #1, r0l ROM:00009DFA and.b #3, r0l ROM:00009DFC mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:00009DFC ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009DFC ; ItemScreenHandler: ROM:00009DFC ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009DFC ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009DFC ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009DFC ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009DFC ; 0x0010 - light grey pokeball ROM:00009DFC ; 0x0020 - tiny map icon ROM:00009DFC ; 0x0040 - found item #0 (slot nonempty) ROM:00009DFC ; 0x0080 - found item #1 (slot nonempty) ROM:00009DFC ; 0x0100 - found item #2 (slot nonempty) ROM:00009DFC ; 0x0200 - grey item icon ROM:00009DFC ; ItemRXed - what was RXed ROM:00009DFC ; 0 - event pokemon ROM:00009DFC ; 1 - special route ROM:00009DFC ; 2 - item ROM:00009DFC ; 3 - special ROM:00009DFC ; 4 - stamp: heart ROM:00009DFC ; 5 - stamp: spade ROM:00009DFC ; 6 - stamp: diamond ROM:00009DFC ; 7 - stamp: club ROM:00009DFC ; switch: ROM:00009DFC ; zero - pokemon does ROM:00009DFC ; nonzero - item needs to be switched ROM:00009DFC ; item RXed: ROM:00009DFC ; what sort of thing was RXed: item, map, route, etc ROM:00009E00 mov.b #2, r0l ROM:00009E02 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009E06 ROM:00009E06 loc_9E06: ; CODE XREF: sub_9DCE+24j ROM:00009E06 mov.b #2, r0l ROM:00009E08 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009E08 ; // 0x02 - enter ROM:00009E08 ; // 0x04 - left ROM:00009E08 ; // 0x08 - right ROM:00009E0C mov.b r0l, r0l ROM:00009E0E beq loc_9E44:8 ROM:00009E10 mov.b @gCurSubstateD:16, r0l ROM:00009E14 beq loc_9E44:8 ROM:00009E16 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:00009E16 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009E16 ; ItemScreenHandler: ROM:00009E16 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009E16 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009E16 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009E16 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009E16 ; 0x0010 - light grey pokeball ROM:00009E16 ; 0x0020 - tiny map icon ROM:00009E16 ; 0x0040 - found item #0 (slot nonempty) ROM:00009E16 ; 0x0080 - found item #1 (slot nonempty) ROM:00009E16 ; 0x0100 - found item #2 (slot nonempty) ROM:00009E16 ; 0x0200 - grey item icon ROM:00009E16 ; ItemRXed - what was RXed ROM:00009E16 ; 0 - event pokemon ROM:00009E16 ; 1 - special route ROM:00009E16 ; 2 - item ROM:00009E16 ; 3 - special ROM:00009E16 ; 4 - stamp: heart ROM:00009E16 ; 5 - stamp: spade ROM:00009E16 ; 6 - stamp: diamond ROM:00009E16 ; 7 - stamp: club ROM:00009E16 ; switch: ROM:00009E16 ; zero - pokemon does ROM:00009E16 ; nonzero - item needs to be switched ROM:00009E16 ; item RXed: ROM:00009E16 ; what sort of thing was RXed: item, map, route, etc ROM:00009E1A mov.b @gCurSubstateB+1:16, r0h ; Substate: ROM:00009E1A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009E1E cmp.b r0h, r0l ROM:00009E20 bne loc_9E36:8 ROM:00009E22 mov.b #3, r0l ROM:00009E24 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009E28 mov.b #3, r0l ROM:00009E2A mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00009E2A ; battle: ROM:00009E2A ; 0 - battle opening animation ROM:00009E2A ; 1 - "XYZ appeared" message ROM:00009E2A ; 2 - "attack evade catch" directions shown ROM:00009E2A ; 3 - our action taken. details in gCurSubstateF ROM:00009E2A ; 4 - poke action taken. details in gCurSubstateF ROM:00009E2A ; 5 - "was too strong" ROM:00009E2A ; 6 - we lost ROM:00009E2A ; 7 - fled ROM:00009E2A ; 8 - staredown ROM:00009E2A ; 9 - almost had it ROM:00009E2A ; 10 - "threw a pokeball" ROM:00009E2A ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00009E2A ; 12, 14 - pokeball flying ROM:00009E2A ; 13 - pokeball flying ROM:00009E2A ; 15 - catch animation plays ROM:00009E2A ; 16 - caught! ROM:00009E2A ; switcht: ROM:00009E2A ; cur slected poke name ROM:00009E2E mov.b #0x10, r0l ROM:00009E30 mov.b r0l, @gCurSubstateE:16 ; ubstate for various modes ROM:00009E30 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009E34 bra locret_9E70:8 ROM:00009E36 ; --------------------------------------------------------------------------- ROM:00009E36 ROM:00009E36 loc_9E36: ; CODE XREF: sub_9DCE+52j ROM:00009E36 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00009E36 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009E36 ; ItemScreenHandler: ROM:00009E36 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009E36 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009E36 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009E36 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009E36 ; 0x0010 - light grey pokeball ROM:00009E36 ; 0x0020 - tiny map icon ROM:00009E36 ; 0x0040 - found item #0 (slot nonempty) ROM:00009E36 ; 0x0080 - found item #1 (slot nonempty) ROM:00009E36 ; 0x0100 - found item #2 (slot nonempty) ROM:00009E36 ; 0x0200 - grey item icon ROM:00009E36 ; ItemRXed - what was RXed ROM:00009E36 ; 0 - event pokemon ROM:00009E36 ; 1 - special route ROM:00009E36 ; 2 - item ROM:00009E36 ; 3 - special ROM:00009E36 ; 4 - stamp: heart ROM:00009E36 ; 5 - stamp: spade ROM:00009E36 ; 6 - stamp: diamond ROM:00009E36 ; 7 - stamp: club ROM:00009E36 ; switch: ROM:00009E36 ; zero - pokemon does ROM:00009E36 ; nonzero - item needs to be switched ROM:00009E36 ; item RXed: ROM:00009E36 ; what sort of thing was RXed: item, map, route, etc ROM:00009E3A bne loc_9E64:8 ROM:00009E3C mov.b #4, r0l ROM:00009E3E jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009E42 bra locret_9E70:8 ROM:00009E44 ; --------------------------------------------------------------------------- ROM:00009E44 ROM:00009E44 loc_9E44: ; CODE XREF: sub_9DCE+40j ROM:00009E44 ; sub_9DCE+46j ROM:00009E44 mov.b @gCurSubstateC:16, r0l ROM:00009E48 beq loc_9E52:8 ROM:00009E4A dec.b r0l ROM:00009E4C mov.b r0l, @gCurSubstateC:16 ROM:00009E50 bra locret_9E70:8 ROM:00009E52 ; --------------------------------------------------------------------------- ROM:00009E52 ROM:00009E52 loc_9E52: ; CODE XREF: sub_9DCE+7Aj ROM:00009E52 mov.b @gCurSubstateD:16, r0l ROM:00009E56 beq loc_9E5E:8 ROM:00009E58 dec.b r0l ROM:00009E5A mov.b r0l, @gCurSubstateD:16 ROM:00009E5E ROM:00009E5E loc_9E5E: ; CODE XREF: sub_9DCE+88j ROM:00009E5E mov.b @gCurSubstateD:16, r0l ROM:00009E62 bne locret_9E70:8 ROM:00009E64 ROM:00009E64 loc_9E64: ; CODE XREF: sub_9DCE+6Cj ROM:00009E64 mov.b #0xE, r0l ROM:00009E66 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009E6A mov.b #6, r0l ROM:00009E6C jsr setCurrentlyActiveView:24 ROM:00009E70 ROM:00009E70 locret_9E70: ; CODE XREF: sub_9DCE+66j ROM:00009E70 ; sub_9DCE+74j ... ROM:00009E70 rts ROM:00009E70 ; End of function sub_9DCE ROM:00009E70 ROM:00009E72 ROM:00009E72 ; =============== S U B R O U T I N E ======================================= ROM:00009E72 ROM:00009E72 ROM:00009E72 interactionHandlerPokeRadar: ; CODE XREF: interactionHandler:case_0x03p ROM:00009E72 jsr is_F7C4_nonzero:24 ROM:00009E76 mov.b r0l, r0l ROM:00009E78 bne locret_9F42:16 ROM:00009E7C mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:00009E7C ; battle: ROM:00009E7C ; 0 - battle opening animation ROM:00009E7C ; 1 - "XYZ appeared" message ROM:00009E7C ; 2 - "attack evade catch" directions shown ROM:00009E7C ; 3 - our action taken. details in gCurSubstateF ROM:00009E7C ; 4 - poke action taken. details in gCurSubstateF ROM:00009E7C ; 5 - "was too strong" ROM:00009E7C ; 6 - we lost ROM:00009E7C ; 7 - fled ROM:00009E7C ; 8 - staredown ROM:00009E7C ; 9 - almost had it ROM:00009E7C ; 10 - "threw a pokeball" ROM:00009E7C ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00009E7C ; 12, 14 - pokeball flying ROM:00009E7C ; 13 - pokeball flying ROM:00009E7C ; 15 - catch animation plays ROM:00009E7C ; 16 - caught! ROM:00009E7C ; switcht: ROM:00009E7C ; cur slected poke name ROM:00009E80 beq loc_9E92:8 ROM:00009E82 cmp.b #1, r0l ROM:00009E84 beq loc_9E9A:8 ROM:00009E86 cmp.b #2, r0l ROM:00009E88 beq loc_9EAC:8 ROM:00009E8A cmp.b #3, r0l ROM:00009E8C bne locret_9F42:16 ROM:00009E90 bra loc_9ECA:8 ROM:00009E92 ; --------------------------------------------------------------------------- ROM:00009E92 ROM:00009E92 loc_9E92: ; CODE XREF: interactionHandlerPokeRadar+Ej ROM:00009E92 jsr sub_9DCE:24 ROM:00009E96 jmp locret_9F42:24 ROM:00009E9A ; --------------------------------------------------------------------------- ROM:00009E9A ROM:00009E9A loc_9E9A: ; CODE XREF: interactionHandlerPokeRadar+12j ROM:00009E9A mov.b @gCurSubstateD:16, r0l ROM:00009E9E cmp.b #4, r0l ROM:00009EA0 bls locret_9F42:16 ROM:00009EA4 jsr sub_2938:24 ROM:00009EA8 mov.b #4, r0l ROM:00009EAA bra loc_9EC4:8 ROM:00009EAC ; --------------------------------------------------------------------------- ROM:00009EAC ROM:00009EAC loc_9EAC: ; CODE XREF: interactionHandlerPokeRadar+16j ROM:00009EAC mov.b #0xE, r0l ROM:00009EAE jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:00009EAE ; // 0x02 - enter ROM:00009EAE ; // 0x04 - left ROM:00009EAE ; // 0x08 - right ROM:00009EB2 mov.b r0l, r0l ROM:00009EB4 beq locret_9F42:16 ROM:00009EB8 sub.b r0l, r0l ROM:00009EBA jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:00009EBE jsr someStateVarShuffling:24 ROM:00009EC2 sub.b r0l, r0l ROM:00009EC4 ROM:00009EC4 loc_9EC4: ; CODE XREF: interactionHandlerPokeRadar+38j ROM:00009EC4 jsr setCurrentlyActiveView:24 ROM:00009EC8 bra locret_9F42:8 ROM:00009ECA ; --------------------------------------------------------------------------- ROM:00009ECA ROM:00009ECA loc_9ECA: ; CODE XREF: interactionHandlerPokeRadar+1Ej ROM:00009ECA mov.b @gCurSubstateE:16, r0l ; ubstate for various modes ROM:00009ECA ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009ECE beq locret_9F42:8 ROM:00009ED0 dec.b r0l ROM:00009ED2 mov.b r0l, @gCurSubstateE:16 ; ubstate for various modes ROM:00009ED2 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009ED6 bne locret_9F42:8 ROM:00009ED8 mov.b @gCurSubstateB:16, r0l ; Substate: ROM:00009ED8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009EDC extu.w r0 ROM:00009EDE dec.w #1, r0 ROM:00009EE0 mov.b @gCurSubstateA+1:16, r1l ; Substate for various modes ROM:00009EE0 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009EE0 ; ItemScreenHandler: ROM:00009EE0 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009EE0 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009EE0 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009EE0 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009EE0 ; 0x0010 - light grey pokeball ROM:00009EE0 ; 0x0020 - tiny map icon ROM:00009EE0 ; 0x0040 - found item #0 (slot nonempty) ROM:00009EE0 ; 0x0080 - found item #1 (slot nonempty) ROM:00009EE0 ; 0x0100 - found item #2 (slot nonempty) ROM:00009EE0 ; 0x0200 - grey item icon ROM:00009EE0 ; ItemRXed - what was RXed ROM:00009EE0 ; 0 - event pokemon ROM:00009EE0 ; 1 - special route ROM:00009EE0 ; 2 - item ROM:00009EE0 ; 3 - special ROM:00009EE0 ; 4 - stamp: heart ROM:00009EE0 ; 5 - stamp: spade ROM:00009EE0 ; 6 - stamp: diamond ROM:00009EE0 ; 7 - stamp: club ROM:00009EE0 ; switch: ROM:00009EE0 ; zero - pokemon does ROM:00009EE0 ; nonzero - item needs to be switched ROM:00009EE0 ; item RXed: ROM:00009EE0 ; what sort of thing was RXed: item, map, route, etc ROM:00009EE4 extu.w r1 ROM:00009EE6 cmp.w r0, r1 ROM:00009EE8 blt loc_9EFC:8 ROM:00009EEA mov.b #1, r0l ROM:00009EEC mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00009EEC ; battle: ROM:00009EEC ; 0 - battle opening animation ROM:00009EEC ; 1 - "XYZ appeared" message ROM:00009EEC ; 2 - "attack evade catch" directions shown ROM:00009EEC ; 3 - our action taken. details in gCurSubstateF ROM:00009EEC ; 4 - poke action taken. details in gCurSubstateF ROM:00009EEC ; 5 - "was too strong" ROM:00009EEC ; 6 - we lost ROM:00009EEC ; 7 - fled ROM:00009EEC ; 8 - staredown ROM:00009EEC ; 9 - almost had it ROM:00009EEC ; 10 - "threw a pokeball" ROM:00009EEC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00009EEC ; 12, 14 - pokeball flying ROM:00009EEC ; 13 - pokeball flying ROM:00009EEC ; 15 - catch animation plays ROM:00009EEC ; 16 - caught! ROM:00009EEC ; switcht: ROM:00009EEC ; cur slected poke name ROM:00009EF0 mov.b r0l, @gCurSubstateE:16 ; ubstate for various modes ROM:00009EF0 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009EF4 sub.b r0h, r0h ROM:00009EF6 mov.b r0h, @gCurSubstateD:16 ROM:00009EFA bra locret_9F42:8 ROM:00009EFC ; --------------------------------------------------------------------------- ROM:00009EFC ROM:00009EFC loc_9EFC: ; CODE XREF: interactionHandlerPokeRadar+76j ROM:00009EFC sub.b r0l, r0l ROM:00009EFE mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:00009EFE ; battle: ROM:00009EFE ; 0 - battle opening animation ROM:00009EFE ; 1 - "XYZ appeared" message ROM:00009EFE ; 2 - "attack evade catch" directions shown ROM:00009EFE ; 3 - our action taken. details in gCurSubstateF ROM:00009EFE ; 4 - poke action taken. details in gCurSubstateF ROM:00009EFE ; 5 - "was too strong" ROM:00009EFE ; 6 - we lost ROM:00009EFE ; 7 - fled ROM:00009EFE ; 8 - staredown ROM:00009EFE ; 9 - almost had it ROM:00009EFE ; 10 - "threw a pokeball" ROM:00009EFE ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:00009EFE ; 12, 14 - pokeball flying ROM:00009EFE ; 13 - pokeball flying ROM:00009EFE ; 15 - catch animation plays ROM:00009EFE ; 16 - caught! ROM:00009EFE ; switcht: ROM:00009EFE ; cur slected poke name ROM:00009F02 jsr rand:24 ROM:00009F06 shlr.w r0 ROM:00009F08 shlr.w r0 ROM:00009F0A mov.b @gCurSubstateA+1:16, r1l ; Substate for various modes ROM:00009F0A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009F0A ; ItemScreenHandler: ROM:00009F0A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009F0A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009F0A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009F0A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009F0A ; 0x0010 - light grey pokeball ROM:00009F0A ; 0x0020 - tiny map icon ROM:00009F0A ; 0x0040 - found item #0 (slot nonempty) ROM:00009F0A ; 0x0080 - found item #1 (slot nonempty) ROM:00009F0A ; 0x0100 - found item #2 (slot nonempty) ROM:00009F0A ; 0x0200 - grey item icon ROM:00009F0A ; ItemRXed - what was RXed ROM:00009F0A ; 0 - event pokemon ROM:00009F0A ; 1 - special route ROM:00009F0A ; 2 - item ROM:00009F0A ; 3 - special ROM:00009F0A ; 4 - stamp: heart ROM:00009F0A ; 5 - stamp: spade ROM:00009F0A ; 6 - stamp: diamond ROM:00009F0A ; 7 - stamp: club ROM:00009F0A ; switch: ROM:00009F0A ; zero - pokemon does ROM:00009F0A ; nonzero - item needs to be switched ROM:00009F0A ; item RXed: ROM:00009F0A ; what sort of thing was RXed: item, map, route, etc ROM:00009F0E extu.w r1 ROM:00009F10 extu.w r0 ROM:00009F12 mov.b @(unk_BF1E,er1), r1l ROM:00009F16 divxu.b r1l, r0 ROM:00009F18 add.b #0x10, r0h ROM:00009F1A mov.b r0h, @gCurSubstateC:16 ROM:00009F1E mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:00009F1E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009F1E ; ItemScreenHandler: ROM:00009F1E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009F1E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009F1E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009F1E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009F1E ; 0x0010 - light grey pokeball ROM:00009F1E ; 0x0020 - tiny map icon ROM:00009F1E ; 0x0040 - found item #0 (slot nonempty) ROM:00009F1E ; 0x0080 - found item #1 (slot nonempty) ROM:00009F1E ; 0x0100 - found item #2 (slot nonempty) ROM:00009F1E ; 0x0200 - grey item icon ROM:00009F1E ; ItemRXed - what was RXed ROM:00009F1E ; 0 - event pokemon ROM:00009F1E ; 1 - special route ROM:00009F1E ; 2 - item ROM:00009F1E ; 3 - special ROM:00009F1E ; 4 - stamp: heart ROM:00009F1E ; 5 - stamp: spade ROM:00009F1E ; 6 - stamp: diamond ROM:00009F1E ; 7 - stamp: club ROM:00009F1E ; switch: ROM:00009F1E ; zero - pokemon does ROM:00009F1E ; nonzero - item needs to be switched ROM:00009F1E ; item RXed: ROM:00009F1E ; what sort of thing was RXed: item, map, route, etc ROM:00009F22 inc.b r0l ROM:00009F24 mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:00009F24 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009F24 ; ItemScreenHandler: ROM:00009F24 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009F24 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009F24 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009F24 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009F24 ; 0x0010 - light grey pokeball ROM:00009F24 ; 0x0020 - tiny map icon ROM:00009F24 ; 0x0040 - found item #0 (slot nonempty) ROM:00009F24 ; 0x0080 - found item #1 (slot nonempty) ROM:00009F24 ; 0x0100 - found item #2 (slot nonempty) ROM:00009F24 ; 0x0200 - grey item icon ROM:00009F24 ; ItemRXed - what was RXed ROM:00009F24 ; 0 - event pokemon ROM:00009F24 ; 1 - special route ROM:00009F24 ; 2 - item ROM:00009F24 ; 3 - special ROM:00009F24 ; 4 - stamp: heart ROM:00009F24 ; 5 - stamp: spade ROM:00009F24 ; 6 - stamp: diamond ROM:00009F24 ; 7 - stamp: club ROM:00009F24 ; switch: ROM:00009F24 ; zero - pokemon does ROM:00009F24 ; nonzero - item needs to be switched ROM:00009F24 ; item RXed: ROM:00009F24 ; what sort of thing was RXed: item, map, route, etc ROM:00009F28 extu.w r0 ROM:00009F2A mov.b @(byte_BF1A,er0), r0l ROM:00009F2E mov.b r0l, @gCurSubstateD:16 ROM:00009F32 jsr rand:24 ROM:00009F36 shll.w r0 ROM:00009F38 shll.w r0 ROM:00009F3A shll.w r0 ROM:00009F3C and.b #3, r0h ROM:00009F3E mov.b r0h, @gCurSubstateB+1:16 ; Substate: ROM:00009F3E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009F42 ROM:00009F42 locret_9F42: ; CODE XREF: interactionHandlerPokeRadar+6j ROM:00009F42 ; interactionHandlerPokeRadar+1Aj ... ROM:00009F42 rts ROM:00009F42 ; End of function interactionHandlerPokeRadar ROM:00009F42 ROM:00009F44 ROM:00009F44 ; =============== S U B R O U T I N E ======================================= ROM:00009F44 ROM:00009F44 ROM:00009F44 pokeRadarDraw: ; CODE XREF: maybe_viewDoDisplay:case__0x03p ROM:00009F44 ROM:00009F44 var_1 = -1 ROM:00009F44 ROM:00009F44 val_0x280 = r5 ROM:00009F44 bushIdx = e6 ROM:00009F44 subs #2, sp ROM:00009F46 mov.l #0x1000280, er5 ROM:00009F4C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:00009F50 mov.w e5, r0 ROM:00009F52 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:00009F56 mov.w r0, r6 ROM:00009F58 mov.b @curUiFlags:16, r4l ; bits: ROM:00009F58 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:00009F58 ; 0x02 - slower animation frame ROM:00009F5C and.b #1, r4l ; possibly moved a bit ROM:00009F5E extu.w r4 ROM:00009F60 add.w #9, r4 ; right arrow ROM:00009F64 mov.w #0x10, e4 ; each arrow is 16 bytes ROM:00009F68 mulxu.w e4, er4 ROM:00009F6A mov.w #0x278, r1 ROM:00009F6E add.w val_0x280, r1 ROM:00009F70 add.w r1, r4 ; 0x4F8 - arrows base ROM:00009F72 mov.w r0, e0 ROM:00009F74 mov.w r4, r0 ROM:00009F76 mov.w #0x10, r1 ROM:00009F7A jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009F7E mov.b @gCurSubstateA:16, r4l ; Substate for various modes ROM:00009F7E ; POKeRADAR: currently pointed-to bush (arrow location) ROM:00009F7E ; ItemScreenHandler: ROM:00009F7E ; 0x0001 - have walking pokemon (are we on a stroll) ROM:00009F7E ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:00009F7E ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:00009F7E ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:00009F7E ; 0x0010 - light grey pokeball ROM:00009F7E ; 0x0020 - tiny map icon ROM:00009F7E ; 0x0040 - found item #0 (slot nonempty) ROM:00009F7E ; 0x0080 - found item #1 (slot nonempty) ROM:00009F7E ; 0x0100 - found item #2 (slot nonempty) ROM:00009F7E ; 0x0200 - grey item icon ROM:00009F7E ; ItemRXed - what was RXed ROM:00009F7E ; 0 - event pokemon ROM:00009F7E ; 1 - special route ROM:00009F7E ; 2 - item ROM:00009F7E ; 3 - special ROM:00009F7E ; 4 - stamp: heart ROM:00009F7E ; 5 - stamp: spade ROM:00009F7E ; 6 - stamp: diamond ROM:00009F7E ; 7 - stamp: club ROM:00009F7E ; switch: ROM:00009F7E ; zero - pokemon does ROM:00009F7E ; nonzero - item needs to be switched ROM:00009F7E ; item RXed: ROM:00009F7E ; what sort of thing was RXed: item, map, route, etc ROM:00009F82 mov.b r4l, r0h ROM:00009F84 and.b #1, r0h ROM:00009F86 mov.b #0x18, r0l ; y coord is 8 or 32 ROM:00009F88 mulxu.b r0h, r0 ROM:00009F8A add.b #8, r0l ROM:00009F8C mov.b r4l, r1l ROM:00009F8E extu.w r1 ROM:00009F90 mov.b @(BUSH_X_COORDINATES_IN_POKERADAR,er1), r1l ; bush order is top to bottom, LTR ROM:00009F94 add.b #-8, r1l ROM:00009F96 mov.w r6, e0 ROM:00009F98 mov.b #8, r1h ROM:00009F9A mov.w r1, @sp ROM:00009F9C mov.b r1h, r1l ROM:00009F9E mov.b r0l, r0h ROM:00009FA0 mov.b @(1:16,sp), r0l ROM:00009FA4 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009FA8 mov.w #0x1A30, r4 ROM:00009FAC add.w val_0x280, r4 ; dark bush for poke hunting ROM:00009FAE mov.w r4, r0 ROM:00009FB0 mov.w #0xC0, r1 ; '+' ROM:00009FB4 mov.w r6, e0 ROM:00009FB6 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009FBA sub.w bushIdx, bushIdx ROM:00009FBC ROM:00009FBC drawBushes: ; CODE XREF: pokeRadarDraw+98j ROM:00009FBC mov.w bushIdx, r0 ROM:00009FBE and.b #1, r0l ROM:00009FC0 mov.b #0x18, r0h ; y coords are 0 and 24 ROM:00009FC2 mulxu.b r0h, r0 ROM:00009FC4 mov.b r0l, r0h ROM:00009FC6 mov.w bushIdx, r1 ROM:00009FC8 mov.b @(BUSH_X_COORDINATES_IN_POKERADAR,er1), r0l ; bush order is top to bottom, LTR ROM:00009FCC mov.w r6, e0 ROM:00009FCE mov.w #0x1820, r1 ROM:00009FD2 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:00009FD6 inc.w #1, bushIdx ROM:00009FD8 cmp.w #4, bushIdx ROM:00009FDC blt drawBushes:8 ROM:00009FDE mov.b @gCurSubstateE:16, r0l ; ubstate for various modes ROM:00009FDE ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:00009FE2 beq loc_A0A2:16 ROM:00009FE6 mov.w #0x1AF0, r4 ROM:00009FEA add.w val_0x280, r4 ; 0x1D70 - word bubble with one exclamation point (for poke hunting), #2, #2, and the 3 radiating lines images ROM:00009FEC mov.w r4, r0 ROM:00009FEE mov.w e5, r1 ROM:00009FF0 mov.w r6, e0 ROM:00009FF2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:00009FF6 add.w #0xC0, r6 ; '+' ROM:00009FFA mov.b @gCurSubstateB+1:16, r4l ; Substate: ROM:00009FFA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:00009FFE mov.b r4l, r0h ROM:0000A000 and.b #1, r0h ROM:0000A002 mov.b #0x18, r0l ROM:0000A004 mulxu.b r0h, r0 ROM:0000A006 mov.b r4l, r1l ROM:0000A008 extu.w r1 ROM:0000A00A mov.b @(BUSH_X_COORDINATES_IN_POKERADAR,er1), r1l ; bush order is top to bottom, LTR ROM:0000A00E add.b #0x10, r1l ROM:0000A010 mov.w r6, e0 ROM:0000A012 mov.b #0x10, r1h ROM:0000A014 mov.w r1, @sp ROM:0000A016 mov.b r1h, r1l ROM:0000A018 mov.b r0l, r0h ROM:0000A01A mov.b @(2+var_1:16,sp), r0l ROM:0000A01E jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000A022 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000A022 ; battle: ROM:0000A022 ; 0 - battle opening animation ROM:0000A022 ; 1 - "XYZ appeared" message ROM:0000A022 ; 2 - "attack evade catch" directions shown ROM:0000A022 ; 3 - our action taken. details in gCurSubstateF ROM:0000A022 ; 4 - poke action taken. details in gCurSubstateF ROM:0000A022 ; 5 - "was too strong" ROM:0000A022 ; 6 - we lost ROM:0000A022 ; 7 - fled ROM:0000A022 ; 8 - staredown ROM:0000A022 ; 9 - almost had it ROM:0000A022 ; 10 - "threw a pokeball" ROM:0000A022 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000A022 ; 12, 14 - pokeball flying ROM:0000A022 ; 13 - pokeball flying ROM:0000A022 ; 15 - catch animation plays ROM:0000A022 ; 16 - caught! ROM:0000A022 ; switcht: ROM:0000A022 ; cur slected poke name ROM:0000A026 cmp.b #3, r0l ROM:0000A028 beq loc_A036:8 ROM:0000A02A cmp.b #1, r0l ROM:0000A02C beq loc_A040:8 ROM:0000A02E cmp.b #2, r0l ROM:0000A030 bne out:16 ROM:0000A034 bra loc_A082:8 ROM:0000A036 ; --------------------------------------------------------------------------- ROM:0000A036 ROM:0000A036 loc_A036: ; CODE XREF: pokeRadarDraw+E4j ROM:0000A036 mov.w #0xF, r1 ROM:0000A03A mov.w #0x1D30, r0 ; "Found something!" ROM:0000A03E bra loc_A09C:8 ROM:0000A040 ; --------------------------------------------------------------------------- ROM:0000A040 ROM:0000A040 loc_A040: ; CODE XREF: pokeRadarDraw+E8j ROM:0000A040 mov.b #3, r0l ROM:0000A042 push.w r0 ROM:0000A044 mov.b @gCurSubstateD:16, r1l ROM:0000A048 mov.b #8, r1h ROM:0000A04A mulxu.b r1h, r1 ROM:0000A04C mov.b r1l, r1h ROM:0000A04E mov.b #0x60, r1l ; '`' ROM:0000A050 sub.w r0, r0 ROM:0000A052 jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:0000A056 adds #2, sp ROM:0000A058 mov.b #3, r0l ROM:0000A05A push.w r0 ROM:0000A05C mov.b @gCurSubstateD:16, r0l ROM:0000A060 mov.b #8, r0h ROM:0000A062 mulxu.b r0h, r0 ROM:0000A064 mov.b r0l, r6l ROM:0000A066 mov.b #0x40, r0h ; '@' ROM:0000A068 sub.b r6l, r0h ROM:0000A06A mov.b r0l, r1h ROM:0000A06C mov.b #0x60, r1l ; '`' ROM:0000A06E sub.b r0l, r0l ROM:0000A070 jsr lcdFillRectangle:24 ; (r0l = x, r0h = y, r1l = w, r1h = h, [sp] = color) ROM:0000A074 adds #2, sp ROM:0000A076 mov.b @gCurSubstateD:16, r0l ROM:0000A07A inc.b r0l ROM:0000A07C mov.b r0l, @gCurSubstateD:16 ROM:0000A080 bra out:8 ROM:0000A082 ; --------------------------------------------------------------------------- ROM:0000A082 ROM:0000A082 loc_A082: ; CODE XREF: pokeRadarDraw+F0j ROM:0000A082 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000A082 ; gifted items view: this is item number that has focus and arrow ROM:0000A082 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000A082 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000A082 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000A086 extu.w r0 ROM:0000A088 mov.w r0, e0 ROM:0000A08A mov.b #0xD, r1l ROM:0000A08C mov.w #0x2002, r0 ROM:0000A090 jsr drawNumberAndWattsymbolOnscreen:24 ; (r0l = x, r0h = y, r1l =nameBorderFlags) ROM:0000A094 mov.w #0x10E, r1 ROM:0000A098 mov.w #0xF30, r0 ; "received!" ROM:0000A09C ROM:0000A09C loc_A09C: ; CODE XREF: pokeRadarDraw+FAj ROM:0000A09C jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000A09C ; ROM:0000A09C ; //always drawn at x = 0 ROM:0000A09C ; ROM:0000A0A0 bra out:8 ROM:0000A0A2 ; --------------------------------------------------------------------------- ROM:0000A0A2 ROM:0000A0A2 loc_A0A2: ; CODE XREF: pokeRadarDraw+9Ej ROM:0000A0A2 mov.w #0xF, r1 ROM:0000A0A6 mov.w #0x1C30, r0 ; "Find a Pokemon!" ROM:0000A0AA jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000A0AA ; ROM:0000A0AA ; //always drawn at x = 0 ROM:0000A0AA ; ROM:0000A0AE mov.b @gCurSubstateC:16, r0l ROM:0000A0B2 bne out:8 ROM:0000A0B4 mov.w #0x1AF0, r4 ROM:0000A0B8 add.w val_0x280, r4 ; 0x1D70 - word bubble with one exclamation point (for poke hunting), #2, #2, and the 3 radiating lines images ROM:0000A0BA mov.w r4, r0 ROM:0000A0BC mov.w e5, r1 ROM:0000A0BE mov.w r6, e0 ROM:0000A0C0 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000A0C4 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000A0C4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000A0C4 ; ItemScreenHandler: ROM:0000A0C4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000A0C4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000A0C4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000A0C4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000A0C4 ; 0x0010 - light grey pokeball ROM:0000A0C4 ; 0x0020 - tiny map icon ROM:0000A0C4 ; 0x0040 - found item #0 (slot nonempty) ROM:0000A0C4 ; 0x0080 - found item #1 (slot nonempty) ROM:0000A0C4 ; 0x0100 - found item #2 (slot nonempty) ROM:0000A0C4 ; 0x0200 - grey item icon ROM:0000A0C4 ; ItemRXed - what was RXed ROM:0000A0C4 ; 0 - event pokemon ROM:0000A0C4 ; 1 - special route ROM:0000A0C4 ; 2 - item ROM:0000A0C4 ; 3 - special ROM:0000A0C4 ; 4 - stamp: heart ROM:0000A0C4 ; 5 - stamp: spade ROM:0000A0C4 ; 6 - stamp: diamond ROM:0000A0C4 ; 7 - stamp: club ROM:0000A0C4 ; switch: ROM:0000A0C4 ; zero - pokemon does ROM:0000A0C4 ; nonzero - item needs to be switched ROM:0000A0C4 ; item RXed: ROM:0000A0C4 ; what sort of thing was RXed: item, map, route, etc ROM:0000A0C8 extu.w r0 ROM:0000A0CA mov.b @(byte_BF21,er0), r0l ROM:0000A0CE extu.w r0 ROM:0000A0D0 mov.w #0x40, e0 ; '@' ROM:0000A0D4 mulxu.w e0, er0 ROM:0000A0D6 add.w r0, r6 ROM:0000A0D8 mov.b @gCurSubstateB+1:16, r4l ; Substate: ROM:0000A0D8 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000A0DC mov.b r4l, r0h ROM:0000A0DE and.b #1, r0h ROM:0000A0E0 mov.b #0x18, r0l ROM:0000A0E2 mulxu.b r0h, r0 ROM:0000A0E4 mov.b r4l, r1l ROM:0000A0E6 extu.w r1 ROM:0000A0E8 mov.b @(BUSH_X_COORDINATES_IN_POKERADAR,er1), r1l ; bush order is top to bottom, LTR ROM:0000A0EC add.b #0x10, r1l ROM:0000A0EE mov.w r6, e0 ROM:0000A0F0 mov.b #0x10, r1h ROM:0000A0F2 mov.w r1, @sp ROM:0000A0F4 mov.b r1h, r1l ROM:0000A0F6 mov.b r0l, r0h ROM:0000A0F8 mov.b @(2+var_1:16,sp), r0l ROM:0000A0FC jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000A100 ROM:0000A100 out: ; CODE XREF: pokeRadarDraw+ECj ROM:0000A100 ; pokeRadarDraw+13Cj ... ROM:0000A100 sub.w r0, r0 ROM:0000A102 jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:0000A106 adds #2, sp ROM:0000A108 rts ROM:0000A108 ; End of function pokeRadarDraw ROM:0000A108 ROM:0000A10A ROM:0000A10A ; =============== S U B R O U T I N E ======================================= ROM:0000A10A ROM:0000A10A ROM:0000A10A interactionHandlerPokeRadarFailureUserTooSlow: ROM:0000A10A ; CODE XREF: interactionHandler:case_0x06p ROM:0000A10A mov.b #0xE, r0l ROM:0000A10C jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000A10C ; // 0x02 - enter ROM:0000A10C ; // 0x04 - left ROM:0000A10C ; // 0x08 - right ROM:0000A110 mov.b r0l, r0l ROM:0000A112 beq locret_A12A:8 ROM:0000A114 sub.b r0l, r0l ROM:0000A116 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000A116 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000A116 ; ItemScreenHandler: ROM:0000A116 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000A116 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000A116 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000A116 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000A116 ; 0x0010 - light grey pokeball ROM:0000A116 ; 0x0020 - tiny map icon ROM:0000A116 ; 0x0040 - found item #0 (slot nonempty) ROM:0000A116 ; 0x0080 - found item #1 (slot nonempty) ROM:0000A116 ; 0x0100 - found item #2 (slot nonempty) ROM:0000A116 ; 0x0200 - grey item icon ROM:0000A116 ; ItemRXed - what was RXed ROM:0000A116 ; 0 - event pokemon ROM:0000A116 ; 1 - special route ROM:0000A116 ; 2 - item ROM:0000A116 ; 3 - special ROM:0000A116 ; 4 - stamp: heart ROM:0000A116 ; 5 - stamp: spade ROM:0000A116 ; 6 - stamp: diamond ROM:0000A116 ; 7 - stamp: club ROM:0000A116 ; switch: ROM:0000A116 ; zero - pokemon does ROM:0000A116 ; nonzero - item needs to be switched ROM:0000A116 ; item RXed: ROM:0000A116 ; what sort of thing was RXed: item, map, route, etc ROM:0000A11A mov.b #4, r0l ROM:0000A11C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000A120 jsr someStateVarShuffling:24 ROM:0000A124 sub.b r0l, r0l ROM:0000A126 jsr setCurrentlyActiveView:24 ROM:0000A12A ROM:0000A12A locret_A12A: ; CODE XREF: interactionHandlerPokeRadarFailureUserTooSlow+8j ROM:0000A12A rts ROM:0000A12A ; End of function interactionHandlerPokeRadarFailureUserTooSlow ROM:0000A12A ROM:0000A12C ROM:0000A12C ; =============== S U B R O U T I N E ======================================= ROM:0000A12C ROM:0000A12C ROM:0000A12C pokeradarUserTooSlowScreen: ; CODE XREF: maybe_viewDoDisplay:case__0x06p ROM:0000A12C jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000A130 mov.w #0xC0, r0 ; '+' ROM:0000A134 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000A138 mov.w r0, r5 ROM:0000A13A mov.w #0x1CB0, r6 ROM:0000A13E mov.w r0, e0 ROM:0000A140 mov.w r6, r0 ROM:0000A142 mov.w #0xC0, r1 ; '+' ROM:0000A146 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000A14A sub.w r6, r6 ROM:0000A14C ROM:0000A14C loc_A14C: ; CODE XREF: pokeradarUserTooSlowScreen+3Ej ROM:0000A14C mov.b r6l, r0h ROM:0000A14E and.b #1, r0h ROM:0000A150 mov.b #0x18, r0l ROM:0000A152 mulxu.b r0h, r0 ROM:0000A154 mov.b r0l, r0h ROM:0000A156 mov.w r5, e0 ROM:0000A158 mov.w #0x1820, r1 ROM:0000A15C mov.b @(BUSH_X_COORDINATES_IN_POKERADAR,er6), r0l ; bush order is top to bottom, LTR ROM:0000A160 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000A164 inc.w #1, r6 ROM:0000A166 cmp.w #4, r6 ROM:0000A16A blt loc_A14C:8 ROM:0000A16C mov.w #0x10F, r1 ROM:0000A170 mov.w #0x1E30, r0 ; "It got away..." ROM:0000A174 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000A174 ; ROM:0000A174 ; //always drawn at x = 0 ROM:0000A174 ; ROM:0000A178 sub.w r0, r0 ROM:0000A17A jsr drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:0000A17E rts ROM:0000A17E ; End of function pokeradarUserTooSlowScreen ROM:0000A17E ROM:0000A180 ROM:0000A180 ; =============== S U B R O U T I N E ======================================= ROM:0000A180 ROM:0000A180 ROM:0000A180 sub_A180: ; CODE XREF: sleepModeEventLoop:loc_78C0p ROM:0000A180 bset #2, @CKSTPR1:8 ; timer b on ROM:0000A184 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A184 ; 0x04 - have walking poke ROM:0000A188 and.b #0xE7, r0l ROM:0000A18A or.b #8, r0l ROM:0000A18C mov.b r0l, @walker_status_flags:16 ; 0x02 - walker inited ROM:0000A18C ; 0x04 - have walking poke ROM:0000A190 mov.w #RTC_RTCCR2, r0 ROM:0000A194 bset #0, @er0 ROM:0000A198 mov.b #0x1E, r0l ROM:0000A19A mov.b r0l, @byte_FFF7B0:16 ROM:0000A19E mov.w #common_bit_flags, r0 ROM:0000A1A2 bclr #7, @er0 ROM:0000A1A6 rts ROM:0000A1A6 ; End of function sub_A180 ROM:0000A1A6 ROM:0000A1A8 ROM:0000A1A8 ; =============== S U B R O U T I N E ======================================= ROM:0000A1A8 ROM:0000A1A8 ROM:0000A1A8 accelProcessDataDetectStep: ; CODE XREF: sleepModeEventLoop+2Cp ROM:0000A1A8 push.w r6 ROM:0000A1AA push.w r5 ROM:0000A1AC mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r5l ROM:0000A1B0 add.b #0x3F, r5l ; '?' ROM:0000A1B2 and.b #0x3F, r5l ROM:0000A1B4 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A1B8 extu.w r0 ROM:0000A1BA mov.b @(ACCEL_SAMPLES_X,er0), r0l ; 0xfff826 ROM:0000A1BE exts.w r0 ROM:0000A1C0 extu.w r5 ROM:0000A1C2 mov.w r5, r6 ROM:0000A1C4 mov.b @(ACCEL_SAMPLES_X,er5), r5l ROM:0000A1C8 exts.w r5 ROM:0000A1CA sub.w r5, r0 ROM:0000A1CC mov.w r0, r0 ROM:0000A1CE blt loc_A1E6:8 ROM:0000A1D0 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A1D4 extu.w r0 ROM:0000A1D6 mov.b @(ACCEL_SAMPLES_X,er0), r0l ROM:0000A1DA exts.w r0 ROM:0000A1DC mov.b @(ACCEL_SAMPLES_X,er6), r1l ROM:0000A1E0 exts.w r1 ROM:0000A1E2 sub.w r1, r0 ROM:0000A1E4 bra loc_A1FC:8 ROM:0000A1E6 ; --------------------------------------------------------------------------- ROM:0000A1E6 ROM:0000A1E6 loc_A1E6: ; CODE XREF: accelProcessDataDetectStep+26j ROM:0000A1E6 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A1EA extu.w r0 ROM:0000A1EC mov.b @(ACCEL_SAMPLES_X,er0), r0l ROM:0000A1F0 exts.w r0 ROM:0000A1F2 neg.w r0 ROM:0000A1F4 mov.b @(ACCEL_SAMPLES_X,er6), r1l ROM:0000A1F8 exts.w r1 ROM:0000A1FA add.w r1, r0 ROM:0000A1FC ROM:0000A1FC loc_A1FC: ; CODE XREF: accelProcessDataDetectStep+3Cj ROM:0000A1FC mov.w r0, e0 ROM:0000A1FE mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A202 extu.w r0 ROM:0000A204 mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:0000A208 exts.w r0 ROM:0000A20A mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:0000A20E exts.w r1 ROM:0000A210 sub.w r1, r0 ROM:0000A212 mov.w r0, r0 ROM:0000A214 blt loc_A22C:8 ROM:0000A216 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A21A extu.w r0 ROM:0000A21C mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:0000A220 exts.w r0 ROM:0000A222 mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:0000A226 exts.w r1 ROM:0000A228 sub.w r1, r0 ROM:0000A22A bra loc_A242:8 ROM:0000A22C ; --------------------------------------------------------------------------- ROM:0000A22C ROM:0000A22C loc_A22C: ; CODE XREF: accelProcessDataDetectStep+6Cj ROM:0000A22C mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A230 extu.w r0 ROM:0000A232 mov.b @(ACCEL_SAMPLES_Y,er0), r0l ROM:0000A236 exts.w r0 ROM:0000A238 neg.w r0 ROM:0000A23A mov.b @(ACCEL_SAMPLES_Y,er6), r1l ROM:0000A23E exts.w r1 ROM:0000A240 add.w r1, r0 ROM:0000A242 ROM:0000A242 loc_A242: ; CODE XREF: accelProcessDataDetectStep+82j ROM:0000A242 add.w r0, e0 ROM:0000A244 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A248 extu.w r0 ROM:0000A24A mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:0000A24E exts.w r0 ROM:0000A250 mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:0000A254 exts.w r1 ROM:0000A256 sub.w r1, r0 ROM:0000A258 mov.w r0, r0 ROM:0000A25A blt loc_A272:8 ROM:0000A25C mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A260 extu.w r0 ROM:0000A262 mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:0000A266 exts.w r0 ROM:0000A268 mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:0000A26C exts.w r1 ROM:0000A26E sub.w r1, r0 ROM:0000A270 bra loc_A288:8 ROM:0000A272 ; --------------------------------------------------------------------------- ROM:0000A272 ROM:0000A272 loc_A272: ; CODE XREF: accelProcessDataDetectStep+B2j ROM:0000A272 mov.b @ACCEL_SAMPLE_NEXT_WRITE_IDX:16, r0l ROM:0000A276 extu.w r0 ROM:0000A278 mov.b @(ACCEL_SAMPLES_Z,er0), r0l ROM:0000A27C exts.w r0 ROM:0000A27E neg.w r0 ROM:0000A280 mov.b @(ACCEL_SAMPLES_Z,er6), r1l ROM:0000A284 exts.w r1 ROM:0000A286 add.w r1, r0 ROM:0000A288 ROM:0000A288 loc_A288: ; CODE XREF: accelProcessDataDetectStep+C8j ROM:0000A288 add.w r0, e0 ROM:0000A28A cmp.w #0x1E, e0 ROM:0000A28E bls loc_A294:8 ROM:0000A290 mov.b #1, r0l ROM:0000A292 bra loc_A296:8 ROM:0000A294 ; --------------------------------------------------------------------------- ROM:0000A294 ROM:0000A294 loc_A294: ; CODE XREF: accelProcessDataDetectStep+E6j ROM:0000A294 sub.b r0l, r0l ROM:0000A296 ROM:0000A296 loc_A296: ; CODE XREF: accelProcessDataDetectStep+EAj ROM:0000A296 pop.w r5 ROM:0000A298 pop.w r6 ROM:0000A29A rts ROM:0000A29A ; End of function accelProcessDataDetectStep ROM:0000A29A ROM:0000A29C ROM:0000A29C ; =============== S U B R O U T I N E ======================================= ROM:0000A29C ROM:0000A29C ROM:0000A29C sub_A29C: ; CODE XREF: likelyKeyDebounceRoutine+AEp ROM:0000A29C mov.b #0x3C, r0l ; '<' ROM:0000A29E mov.b r0l, @byte_FFF7AF:16 ROM:0000A2A2 mov.b #0x5A, r0l ; 'Z' ROM:0000A2A4 mov.b r0l, @byte_FFF7B0:16 ROM:0000A2A8 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A2A8 ; 0x04 - have walking poke ROM:0000A2AC and.b #0x18, r0l ROM:0000A2AE cmp.b #0x10, r0l ROM:0000A2B0 beq locret_A2D8:8 ROM:0000A2B2 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A2B2 ; 0x04 - have walking poke ROM:0000A2B6 and.b #0x18, r0l ROM:0000A2B8 bne loc_A2C0:8 ROM:0000A2BA sub.b r0l, r0l ROM:0000A2BC mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:0000A2C0 ROM:0000A2C0 loc_A2C0: ; CODE XREF: sub_A29C+1Cj ROM:0000A2C0 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A2C0 ; 0x04 - have walking poke ROM:0000A2C4 and.b #0xE7, r0l ROM:0000A2C6 or.b #0x10, r0l ROM:0000A2C8 mov.b r0l, @walker_status_flags:16 ; 0x02 - walker inited ROM:0000A2C8 ; 0x04 - have walking poke ROM:0000A2CC mov.w #RTC_RTCCR2, r0 ROM:0000A2D0 bset #0, @er0 ROM:0000A2D4 jsr lcdExitPowerSaveMode:24 ROM:0000A2D8 ROM:0000A2D8 locret_A2D8: ; CODE XREF: sub_A29C+14j ROM:0000A2D8 rts ROM:0000A2D8 ; End of function sub_A29C ROM:0000A2D8 ROM:0000A2DA ROM:0000A2DA ; =============== S U B R O U T I N E ======================================= ROM:0000A2DA ROM:0000A2DA ROM:0000A2DA sub_A2DA: ; CODE XREF: sub_A2F6+6p ROM:0000A2DA jsr sub_3810:24 ROM:0000A2DE bclr #2, @CKSTPR1:8 ROM:0000A2E2 mov.w #RTC_RTCCR2, r0 ROM:0000A2E6 bclr #0, @er0 ROM:0000A2EA mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A2EA ; 0x04 - have walking poke ROM:0000A2EE and.b #0xE7, r0l ROM:0000A2F0 mov.b r0l, @walker_status_flags:16 ; 0x02 - walker inited ROM:0000A2F0 ; 0x04 - have walking poke ROM:0000A2F4 rts ROM:0000A2F4 ; End of function sub_A2DA ROM:0000A2F4 ROM:0000A2F6 ROM:0000A2F6 ; =============== S U B R O U T I N E ======================================= ROM:0000A2F6 ROM:0000A2F6 ROM:0000A2F6 sub_A2F6: ; CODE XREF: sleepModeEventLoop+E8p ROM:0000A2F6 mov.b @byte_FFF7B0:16, r0l ROM:0000A2FA bne locret_A2FE:8 ROM:0000A2FC bsr sub_A2DA:8 ROM:0000A2FE ROM:0000A2FE locret_A2FE: ; CODE XREF: sub_A2F6+4j ROM:0000A2FE rts ROM:0000A2FE ; End of function sub_A2F6 ROM:0000A2FE ROM:0000A300 ROM:0000A300 ; =============== S U B R O U T I N E ======================================= ROM:0000A300 ROM:0000A300 ROM:0000A300 VECTOR_IRQ0: ; DATA XREF: ROM:00000020o ROM:0000A300 push.w r0 ROM:0000A302 mov.w #common_bit_flags, r0 ROM:0000A306 bset #3, @er0 ROM:0000A30A mov.b #1, r0l ROM:0000A30C mov.b r0l, @byte_FFF7BB:16 ROM:0000A310 bset #2, @CKSTPR1:8 ROM:0000A314 bclr #0, @IRQ_IRR1:8 ROM:0000A318 pop.w r0 ROM:0000A31A rte ROM:0000A31A ; End of function VECTOR_IRQ0 ROM:0000A31A ROM:0000A31C ROM:0000A31C ; =============== S U B R O U T I N E ======================================= ROM:0000A31C ROM:0000A31C ROM:0000A31C VECTOR_IRQ1: ; DATA XREF: ROM:00000022o ROM:0000A31C bclr #1, @IRQ_IRR1:8 ROM:0000A320 rte ROM:0000A320 ; End of function VECTOR_IRQ1 ROM:0000A320 ROM:0000A322 ROM:0000A322 ; =============== S U B R O U T I N E ======================================= ROM:0000A322 ROM:0000A322 ROM:0000A322 VECTOR_IRQ_AEC: ; DATA XREF: ROM:00000024o ROM:0000A322 bclr #2, @IRQ_IRR1:8 ROM:0000A326 rte ROM:0000A326 ; End of function VECTOR_IRQ_AEC ROM:0000A326 ROM:0000A328 ROM:0000A328 ; =============== S U B R O U T I N E ======================================= ROM:0000A328 ROM:0000A328 ROM:0000A328 VECTOR_ADC: ; DATA XREF: ROM:0000004Co ROM:0000A328 bclr #6, @IRQ_IRR2:8 ROM:0000A32C rte ROM:0000A32C ; End of function VECTOR_ADC ROM:0000A32C ROM:0000A32E ROM:0000A32E ; =============== S U B R O U T I N E ======================================= ROM:0000A32E ROM:0000A32E ROM:0000A32E clampTotalStepToLimit: ; CODE XREF: accountForStepTakenLikely+6Ap ROM:0000A32E ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+1B2p ROM:0000A32E mov.l @RamCache_totalSteps:16, er1 ROM:0000A334 cmp.l #9999999, er0 ROM:0000A33A bcs loc_A342:8 ROM:0000A33C mov.l #9999999, er0 ROM:0000A342 ROM:0000A342 loc_A342: ; CODE XREF: clampTotalStepToLimit+Cj ROM:0000A342 mov.l er0, @RamCache_totalSteps:16 ROM:0000A348 rts ROM:0000A348 ; End of function clampTotalStepToLimit ROM:0000A348 ROM:0000A34A ROM:0000A34A ; =============== S U B R O U T I N E ======================================= ROM:0000A34A ROM:0000A34A ROM:0000A34A sub_A34A: ; CODE XREF: sleepModeEventLoop+28p ROM:0000A34A ; sleepModeEventLoop:loc_7932p ROM:0000A34A push.l er2 ROM:0000A34E push.w r3 ROM:0000A350 push.w r5 ROM:0000A352 push.l er6 ROM:0000A356 mov.b @common_bit_flags:16, r0l ROM:0000A35A bld #5, r0l ROM:0000A35C bcs loc_A388:8 ROM:0000A35E mov.b @byte_FFF7A7:16, r0l ROM:0000A362 btst #0, r0l ROM:0000A364 beq loc_A368:8 ROM:0000A366 bsr sub_A396:8 ROM:0000A368 ROM:0000A368 loc_A368: ; CODE XREF: sub_A34A+1Aj ROM:0000A368 mov.b @byte_FFF7A7:16, r0l ROM:0000A36C btst #1, r0l ROM:0000A36E beq loc_A372:8 ROM:0000A370 bsr sub_A3AA:8 ROM:0000A372 ROM:0000A372 loc_A372: ; CODE XREF: sub_A34A+24j ROM:0000A372 mov.b @byte_FFF7A7:16, r0l ROM:0000A376 btst #2, r0l ROM:0000A378 beq loc_A37E:8 ROM:0000A37A jsr dayEndedRecordailyStepadnshipHistoricStepCounts:24 ROM:0000A37E ROM:0000A37E loc_A37E: ; CODE XREF: sub_A34A+2Ej ROM:0000A37E mov.b @byte_FFF7A7:16, r0l ROM:0000A382 and.b #0xF8, r0l ROM:0000A384 mov.b r0l, @byte_FFF7A7:16 ROM:0000A388 ROM:0000A388 loc_A388: ; CODE XREF: sub_A34A+12j ROM:0000A388 pop.l er6 ROM:0000A38C pop.w r5 ROM:0000A38E pop.w r3 ROM:0000A390 pop.l er2 ROM:0000A394 rts ROM:0000A394 ; End of function sub_A34A ROM:0000A394 ROM:0000A396 ROM:0000A396 ; =============== S U B R O U T I N E ======================================= ROM:0000A396 ROM:0000A396 ROM:0000A396 sub_A396: ; CODE XREF: sub_A34A+1Cp ROM:0000A396 mov.w @word_FFF790:16, r0 ROM:0000A39A inc.w #1, r0 ROM:0000A39C beq locret_A3A8:8 ROM:0000A39E mov.w @word_FFF790:16, r0 ROM:0000A3A2 inc.w #1, r0 ROM:0000A3A4 mov.w r0, @word_FFF790:16 ROM:0000A3A8 ROM:0000A3A8 locret_A3A8: ; CODE XREF: sub_A396+6j ROM:0000A3A8 rts ROM:0000A3A8 ; End of function sub_A396 ROM:0000A3A8 ROM:0000A3AA ROM:0000A3AA ; =============== S U B R O U T I N E ======================================= ROM:0000A3AA ROM:0000A3AA ROM:0000A3AA sub_A3AA: ; CODE XREF: sub_A34A+26p ROM:0000A3AA ROM:0000A3AA var_2 = -2 ROM:0000A3AA ROM:0000A3AA subs #2, sp ROM:0000A3AC mov.w #common_bit_flags, r0 ROM:0000A3B0 bset #2, @er0 ROM:0000A3B4 mov.l @RamCache_totalSteps:16, er0 ROM:0000A3BA cmp.l #9999999, er0 ROM:0000A3C0 bcc loc_A3DE:8 ROM:0000A3C2 mov.l @RamCache_STEP_COUNT_maybe:16, er0 ROM:0000A3C8 cmp.l #9999999, er0 ROM:0000A3CE bcc loc_A3DE:8 ROM:0000A3D0 mov.l @RamCache_STEP_COUNT_maybe:16, er0 ROM:0000A3D6 inc.l #1, er0 ROM:0000A3D8 mov.l er0, @RamCache_STEP_COUNT_maybe:16 ROM:0000A3DE ROM:0000A3DE loc_A3DE: ; CODE XREF: sub_A3AA+16j ROM:0000A3DE ; sub_A3AA+24j ROM:0000A3DE mov.w #0x18, e1 ROM:0000A3E2 mov.w #RamCache_totalSteps, r1 ROM:0000A3E6 mov.l #0x2560156, er0 ROM:0000A3EC jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000A3EC ; ROM:0000A3EC ; see docs for readRedundantDataFromEeprom for format info ROM:0000A3F0 mov.b @walker_status_flags:16, r0l ; 0x02 - walker inited ROM:0000A3F0 ; 0x04 - have walking poke ROM:0000A3F4 bld #2, r0l ROM:0000A3F6 bcc loc_A440:8 ROM:0000A3F8 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000A3FC mov.w #0xBE, r0 ; '+' ROM:0000A400 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000A404 mov.w r0, r6 ROM:0000A406 mov.w r0, e0 ROM:0000A408 mov.w #0xBE, r1 ; '+' ROM:0000A40C mov.w #0x8F00, r0 ROM:0000A410 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000A414 sub.b r0l, r0l ROM:0000A416 push.w r0 ROM:0000A418 sub.b r1h, r1h ROM:0000A41A mov.b @RamCache_settingsByte:16, r0l ROM:0000A41E bld #0, r0l ROM:0000A420 bst #0, r1h ROM:0000A422 mov.w #0x88, r0 ; 'ê' ROM:0000A426 mov.w r1, @(4+var_2:16,sp) ROM:0000A42A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000A42E mov.w r0, e0 ROM:0000A430 mov.w r6, r0 ROM:0000A432 sub.w e1, e1 ROM:0000A434 mov.b @(4+var_2:16,sp), r1h ROM:0000A438 mov.b #0x1B, r1l ROM:0000A43A jsr logEvent:24 ; ( ROM:0000A43A ; r0 = TeamAndrouteInfo in ram ptr (0xBE bytes from 0x8f00) ROM:0000A43A ; e0 = tmpBufPtr (0x88 bytes big) can be pre-initialized with data ROM:0000A43A ; r1l = eventTYpe ROM:0000A43A ; r1h = boolean isOnSpecialEventRoute ROM:0000A43A ; e1 = extraInfo (eg: item type) ROM:0000A43A ; [sp] = u8 pushed as u16, availablePokeIdx(1..3 are route availables, 4 is event poke, 0 for N/A) ROM:0000A43A ; ) ROM:0000A43E adds #2, sp ROM:0000A440 ROM:0000A440 loc_A440: ; CODE XREF: sub_A3AA+4Cj ROM:0000A440 sub.w r0, r0 ROM:0000A442 mov.w r0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:0000A446 mov.b @byte_FFF7A8:16, r0l ROM:0000A44A mov.b @currentHour:16, r0h ROM:0000A44E cmp.b r0h, r0l ROM:0000A450 bne loc_A45A:8 ROM:0000A452 mov.w #byte_FFF7A7, r0 ROM:0000A456 bset #2, @er0 ROM:0000A45A ROM:0000A45A loc_A45A: ; CODE XREF: sub_A3AA+A6j ROM:0000A45A adds #2, sp ROM:0000A45C rts ROM:0000A45C ; End of function sub_A3AA ROM:0000A45C ROM:0000A45E ROM:0000A45E ; =============== S U B R O U T I N E ======================================= ROM:0000A45E ROM:0000A45E ROM:0000A45E dayEndedRecordailyStepadnshipHistoricStepCounts: ; CODE XREF: sub_A34A+30p ROM:0000A45E mov.w #0x1C, e6 ROM:0000A462 mov.w @RamCache_totalDays:16, r0 ROM:0000A466 cmp.w #9999, r0 ROM:0000A46A bcc loc_A472:8 ROM:0000A46C inc.w #1, r0 ROM:0000A46E mov.w r0, @RamCache_totalDays:16 ROM:0000A472 ROM:0000A472 loc_A472: ; CODE XREF: dayEndedRecordailyStepadnshipHistoricStepCounts+Cj ROM:0000A472 mov.w #0x18, e1 ROM:0000A476 mov.w #RamCache_totalSteps, r1 ROM:0000A47A mov.l #0x2560156, er0 ROM:0000A480 jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000A480 ; ROM:0000A480 ; see docs for readRedundantDataFromEeprom for format info ROM:0000A484 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000A488 mov.w e6, r0 ROM:0000A48A jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000A48E mov.w r0, r6 ROM:0000A490 mov.w r0, e0 ROM:0000A492 mov.w #0xCEF0, r0 ROM:0000A496 mov.w e6, r1 ROM:0000A498 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000A49C mov.w r6, r1 ROM:0000A49E add.w #0x14, r1 ROM:0000A4A2 mov.w r6, r5 ROM:0000A4A4 add.w #0x18, r5 ROM:0000A4A8 sub.b r3l, r3l ROM:0000A4AA ROM:0000A4AA loc_A4AA: ; CODE XREF: dayEndedRecordailyStepadnshipHistoricStepCounts+60j ROM:0000A4AA mov.l @er1, er0 ROM:0000A4AE mov.l er0, @er5 ROM:0000A4B2 inc.b r3l ROM:0000A4B4 sub.w #4, r1 ROM:0000A4B8 sub.w #4, r5 ROM:0000A4BC cmp.b #6, r3l ROM:0000A4BE bcs loc_A4AA:8 ROM:0000A4C0 mov.l @stepCountTodaySoFar:16, er0 ROM:0000A4C6 mov.l er0, @er6 ROM:0000A4CA mov.w r6, e0 ROM:0000A4CC mov.w #0xCEF0, r0 ROM:0000A4D0 mov.w e6, r1 ROM:0000A4D2 jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000A4D6 sub.l er0, er0 ROM:0000A4D8 mov.l er0, @stepCountTodaySoFar:16 ROM:0000A4DE ROM:0000A4DE erase_peer_team_Area: ROM:0000A4DE mov.w #0xDC00, r6 ROM:0000A4E2 mov.b #0xA, r5l ROM:0000A4E4 ROM:0000A4E4 loc_A4E4: ; CODE XREF: dayEndedRecordailyStepadnshipHistoricStepCounts+9Cj ROM:0000A4E4 add.w #0x224, r6 ROM:0000A4E8 mov.w #8, r0 ROM:0000A4EC add.w r6, r0 ROM:0000A4EE mov.b #0xFF, r1l ROM:0000A4F0 mov.w #0x28, e0 ; '(' ROM:0000A4F4 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:0000A4F8 dec.b r5l ROM:0000A4FA bne loc_A4E4:8 ROM:0000A4FC rts ROM:0000A4FC ; End of function dayEndedRecordailyStepadnshipHistoricStepCounts ROM:0000A4FC ROM:0000A4FE ROM:0000A4FE ; =============== S U B R O U T I N E ======================================= ROM:0000A4FE ROM:0000A4FE ; (er0 = timeInSeconds) ROM:0000A4FE ROM:0000A4FE rtcSet: ; CODE XREF: processSyncPacketFromGame+6Ap ROM:0000A4FE ; rtcFactoryTest+2p ... ROM:0000A4FE u32_val_60 = er4 ROM:0000A4FE mov.l er0, er5 ROM:0000A500 sub.l u32_val_60, u32_val_60 ROM:0000A502 mov.b #0x3C, r4l ; '<' ROM:0000A504 mov.l u32_val_60, er1 ROM:0000A506 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000A50A mov.w #0xA, r6 ROM:0000A50E extu.w r1 ROM:0000A510 mov.w r1, e6 ROM:0000A512 exts.l er1 ROM:0000A514 divxs.w r6, er1 ; r1 = seconds / 10, e1 = seconds % 10 ROM:0000A518 mov.w #0x10, e1 ROM:0000A51C mulxu.w e1, er1 ROM:0000A51E mov.b r1l, r3l ROM:0000A520 mov.w e6, r0 ROM:0000A522 exts.l er0 ROM:0000A524 divxs.w r6, er0 ROM:0000A528 mov.w e0, r0 ROM:0000A52A or.b r0l, r3l ROM:0000A52C mov.l er5, er0 ROM:0000A52E mov.l u32_val_60, er1 ROM:0000A530 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000A534 mov.l er0, er5 ROM:0000A536 mov.l u32_val_60, er1 ROM:0000A538 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000A53C extu.w r1 ROM:0000A53E mov.w r1, e6 ROM:0000A540 exts.l er1 ROM:0000A542 divxs.w r6, er1 ROM:0000A546 mov.w #0x10, e1 ROM:0000A54A mulxu.w e1, er1 ROM:0000A54C mov.b r1l, r3h ROM:0000A54E mov.w e6, r0 ROM:0000A550 exts.l er0 ROM:0000A552 divxs.w r6, er0 ROM:0000A556 mov.w e0, r0 ROM:0000A558 or.b r0l, r3h ROM:0000A55A mov.l er5, er0 ROM:0000A55C mov.l u32_val_60, er1 ROM:0000A55E jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000A562 mov.l er0, er5 ROM:0000A564 sub.l er1, er1 ROM:0000A566 mov.b #24, r1l ROM:0000A568 jsr divmod32:24 ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000A56C extu.w r1 ROM:0000A56E mov.w r1, e6 ROM:0000A570 exts.l er1 ROM:0000A572 divxs.w r6, er1 ROM:0000A576 mov.w #0x10, e1 ROM:0000A57A mulxu.w e1, er1 ROM:0000A57C mov.b r1l, r5l ROM:0000A57E mov.w e6, r0 ROM:0000A580 exts.l er0 ROM:0000A582 divxs.w r6, er0 ROM:0000A586 mov.w e0, r0 ROM:0000A588 or.b r0l, r5l ROM:0000A58A mov.b r5l, r6l ROM:0000A58C mov.b r6l, @currentHour:16 ROM:0000A590 mov.b r3h, @currentMinute:16 ROM:0000A594 mov.b r3l, @currentSecond:16 ROM:0000A598 bset #0, @CKSTPR1:8 ROM:0000A59C mov.w #RTC_RTCCR1, r0 ROM:0000A5A0 bclr #7, @er0 ROM:0000A5A4 bset #4, @er0 ROM:0000A5A8 bclr #4, @er0 ROM:0000A5AC mov.b r3l, @RTC_RSECDR:16 ROM:0000A5B0 mov.b r3h, @RTC_RMINDR:16 ROM:0000A5B4 mov.b r6l, @RTC_RHRDR:16 ROM:0000A5B8 bset #6, @er0 ROM:0000A5BC bset #3, @er0 ROM:0000A5C0 mov.b #0x1C, r0l ROM:0000A5C2 mov.b r0l, @RTC_RTCCR2:16 ROM:0000A5C6 mov.b #0x6D, r0l ; 'm' ROM:0000A5C8 bset #0, @er0 ROM:0000A5CC mov.b #0x6C, r0l ; 'l' ROM:0000A5CE bset #7, @er0 ROM:0000A5D2 rts ROM:0000A5D2 ; End of function rtcSet ROM:0000A5D2 ROM:0000A5D4 ROM:0000A5D4 ; =============== S U B R O U T I N E ======================================= ROM:0000A5D4 ROM:0000A5D4 ; (r0 = secondsOutBcdP, e0 = minutesOutBcdP, r1 = hoursOutBcdP) ROM:0000A5D4 ROM:0000A5D4 rtcReadBcd: ; CODE XREF: performActionAsRequestedByRemote+226j ROM:0000A5D4 jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:0000A5D8 sub.w #6, r7 ROM:0000A5DC mov.w r7, r6 ROM:0000A5DE mov.w r0, r4 ROM:0000A5E0 mov.w r1, r3 ROM:0000A5E2 ROM:0000A5E2 loc_A5E2: ; CODE XREF: rtcReadBcd+56j ROM:0000A5E2 ; rtcReadBcd+62j ... ROM:0000A5E2 sub.b r1h, r1h ; read RTC twice to ascertain a good read ROM:0000A5E4 ROM:0000A5E4 loc_A5E4: ; CODE XREF: rtcReadBcd+14j ROM:0000A5E4 ; rtcReadBcd+4Cj ROM:0000A5E4 mov.b @RTC_RSECDR:16, r0l ROM:0000A5E8 bmi loc_A5E4:8 ROM:0000A5EA mov.b #3, r0l ROM:0000A5EC mulxu.b r1h, r0 ROM:0000A5EE mov.w r0, e1 ROM:0000A5F0 add.w r6, r0 ; stack buffer of 3 bytes for both reads [sec, min, hr] ROM:0000A5F2 mov.b @RTC_RSECDR:16, r1l ROM:0000A5F6 mov.b r1l, @er0 ROM:0000A5F8 ROM:0000A5F8 loc_A5F8: ; CODE XREF: rtcReadBcd+28j ROM:0000A5F8 mov.b @RTC_RMINDR:16, r0l ROM:0000A5FC bmi loc_A5F8:8 ROM:0000A5FE mov.w e1, r0 ROM:0000A600 inc.w #1, r0 ROM:0000A602 add.w r6, r0 ROM:0000A604 mov.b @RTC_RMINDR:16, r1l ROM:0000A608 mov.b r1l, @er0 ROM:0000A60A ROM:0000A60A loc_A60A: ; CODE XREF: rtcReadBcd+3Aj ROM:0000A60A mov.b @RTC_RHRDR:16, r0l ROM:0000A60E bmi loc_A60A:8 ROM:0000A610 inc.w #2, e1 ROM:0000A612 add.w r6, e1 ROM:0000A614 mov.w e1, r0 ROM:0000A616 mov.b @RTC_RHRDR:16, r1l ROM:0000A61A mov.b r1l, @er0 ROM:0000A61C inc.b r1h ROM:0000A61E cmp.b #2, r1h ROM:0000A620 bcs loc_A5E4:8 ROM:0000A622 mov.b @er6, r0l ROM:0000A624 mov.b @(3:16,er6), r0h ROM:0000A628 cmp.b r0h, r0l ROM:0000A62A bne loc_A5E2:8 ; read RTC twice to ascertain a good read ROM:0000A62C mov.b @(1:16,er6), r0l ROM:0000A630 mov.b @(4:16,er6), r0h ROM:0000A634 cmp.b r0h, r0l ROM:0000A636 bne loc_A5E2:8 ; read RTC twice to ascertain a good read ROM:0000A638 mov.b @(2:16,er6), r0l ROM:0000A63C mov.b @(5:16,er6), r0h ROM:0000A640 cmp.b r0h, r0l ROM:0000A642 bne loc_A5E2:8 ; read RTC twice to ascertain a good read ROM:0000A644 mov.b @er6, r0l ROM:0000A646 mov.b r0l, @er4 ROM:0000A648 mov.w e0, r0 ROM:0000A64A mov.b @(1:16,er6), r1l ROM:0000A64E mov.b r1l, @er0 ROM:0000A650 mov.b @(2:16,er6), r0l ROM:0000A654 mov.b r0l, @er3 ROM:0000A656 add.w #6, r7 ROM:0000A65A jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000A65A ; End of function rtcReadBcd ROM:0000A65A ROM:0000A65E ROM:0000A65E ; =============== S U B R O U T I N E ======================================= ROM:0000A65E ROM:0000A65E ROM:0000A65E VECTOR_RTC_QUARTER_SEC: ; DATA XREF: ROM:0000002Eo ROM:0000A65E push.w r0 ROM:0000A660 mov.w #common_bit_flags, r0 ROM:0000A664 bset #0, @er0 ROM:0000A668 mov.w #RTC_RTCFLG, r0 ROM:0000A66C bclr #0, @er0 ROM:0000A670 pop.w r0 ROM:0000A672 rte ROM:0000A672 ; End of function VECTOR_RTC_QUARTER_SEC ROM:0000A672 ROM:0000A674 ROM:0000A674 ; =============== S U B R O U T I N E ======================================= ROM:0000A674 ROM:0000A674 ROM:0000A674 VECTOR_RTC_HALF_SEC: ; DATA XREF: ROM:00000030o ROM:0000A674 push.w r0 ROM:0000A676 mov.w #RTC_RTCFLG, r0 ROM:0000A67A bclr #1, @er0 ROM:0000A67E pop.w r0 ROM:0000A680 rte ROM:0000A680 ; End of function VECTOR_RTC_HALF_SEC ROM:0000A680 ROM:0000A682 ROM:0000A682 ; =============== S U B R O U T I N E ======================================= ROM:0000A682 ROM:0000A682 ROM:0000A682 VECTOR_RTC_EVERY_SEC: ; DATA XREF: ROM:00000032o ROM:0000A682 push.l er0 ROM:0000A686 mov.b @RTC_RSECDR:16, r0l ROM:0000A68A btst #7, r0l ROM:0000A68C bne loc_A692:8 ROM:0000A68E mov.b r0l, @currentSecond:16 ROM:0000A692 ROM:0000A692 loc_A692: ; CODE XREF: VECTOR_RTC_EVERY_SEC+Aj ROM:0000A692 mov.l @RamCache_lastSyncTime:16, er0 ROM:0000A698 inc.l #1, er0 ROM:0000A69A mov.l er0, @RamCache_lastSyncTime:16 ROM:0000A6A0 mov.w @word_FFF7A2:16, r0 ROM:0000A6A4 inc.w #1, r0 ROM:0000A6A6 cmp.w #0xE10, r0 ROM:0000A6AA bls loc_A6B0:8 ROM:0000A6AC mov.w #0xE10, r0 ROM:0000A6B0 ROM:0000A6B0 loc_A6B0: ; CODE XREF: VECTOR_RTC_EVERY_SEC+28j ROM:0000A6B0 mov.w r0, @word_FFF7A2:16 ROM:0000A6B4 mov.b @byte_FFF7AF:16, r0l ROM:0000A6B8 beq loc_A6C4:8 ROM:0000A6BA mov.b @byte_FFF7AF:16, r0l ROM:0000A6BE dec.b r0l ROM:0000A6C0 mov.b r0l, @byte_FFF7AF:16 ROM:0000A6C4 ROM:0000A6C4 loc_A6C4: ; CODE XREF: VECTOR_RTC_EVERY_SEC+36j ROM:0000A6C4 mov.b @byte_FFF7B0:16, r0l ROM:0000A6C8 beq loc_A6D4:8 ROM:0000A6CA mov.b @byte_FFF7B0:16, r0l ROM:0000A6CE dec.b r0l ROM:0000A6D0 mov.b r0l, @byte_FFF7B0:16 ROM:0000A6D4 ROM:0000A6D4 loc_A6D4: ; CODE XREF: VECTOR_RTC_EVERY_SEC+46j ROM:0000A6D4 mov.w #RTC_RTCFLG, r0 ROM:0000A6D8 bclr #2, @er0 ROM:0000A6DC pop.l er0 ROM:0000A6E0 rte ROM:0000A6E0 ; End of function VECTOR_RTC_EVERY_SEC ROM:0000A6E0 ROM:0000A6E2 ROM:0000A6E2 ; =============== S U B R O U T I N E ======================================= ROM:0000A6E2 ROM:0000A6E2 ROM:0000A6E2 VECTOR_RTC_EVERY_MIN: ; DATA XREF: ROM:00000034o ROM:0000A6E2 push.w r0 ROM:0000A6E4 mov.b @RTC_RMINDR:16, r0l ROM:0000A6E8 btst #7, r0l ROM:0000A6EA bne loc_A6F0:8 ROM:0000A6EC mov.b r0l, @currentMinute:16 ROM:0000A6F0 ROM:0000A6F0 loc_A6F0: ; CODE XREF: VECTOR_RTC_EVERY_MIN+8j ROM:0000A6F0 mov.w #byte_FFF7A7, r0 ROM:0000A6F4 bset #0, @er0 ROM:0000A6F8 mov.w #RTC_RTCFLG, r0 ROM:0000A6FC bclr #3, @er0 ROM:0000A700 pop.w r0 ROM:0000A702 rte ROM:0000A702 ; End of function VECTOR_RTC_EVERY_MIN ROM:0000A702 ROM:0000A704 ROM:0000A704 ; =============== S U B R O U T I N E ======================================= ROM:0000A704 ROM:0000A704 ROM:0000A704 VECTOR_RTC_EVERY_HOUR: ; DATA XREF: ROM:00000036o ROM:0000A704 push.w r0 ROM:0000A706 mov.b @RTC_RHRDR:16, r0l ROM:0000A70A btst #7, r0l ROM:0000A70C bne loc_A716:8 ROM:0000A70E mov.b @RTC_RHRDR:16, r0l ROM:0000A712 mov.b r0l, @currentHour:16 ROM:0000A716 ROM:0000A716 loc_A716: ; CODE XREF: VECTOR_RTC_EVERY_HOUR+8j ROM:0000A716 mov.w #byte_FFF7A7, r0 ROM:0000A71A bset #1, @er0 ROM:0000A71E mov.w #RTC_RTCFLG, r0 ROM:0000A722 bclr #4, @er0 ROM:0000A726 pop.w r0 ROM:0000A728 rte ROM:0000A728 ; End of function VECTOR_RTC_EVERY_HOUR ROM:0000A728 ROM:0000A72A ROM:0000A72A ; =============== S U B R O U T I N E ======================================= ROM:0000A72A ROM:0000A72A ; (r0 = eepromAddrForStart) -> bool success in r0l ROM:0000A72A ; wipes all eeprom after the given address, which must be a factor of 256 ROM:0000A72A ROM:0000A72A eepromFactoryTest: ; CODE XREF: factoryTestPerformIfNeeded+128p ROM:0000A72A ; interactionHandlerDebugMode22+C8p ROM:0000A72A ROM:0000A72A var_2 = -2 ROM:0000A72A ROM:0000A72A subs #4, sp ROM:0000A72C mov.w #0x100, e6 ROM:0000A730 mov.w r0, e5 ROM:0000A732 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000A736 mov.w e6, r0 ; get 256 bytes ROM:0000A738 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000A73C mov.w r0, r5 ROM:0000A73E mov.w e5, @(2:16,sp) ROM:0000A742 sub.b r0l, r0l ROM:0000A744 mov.b r0l, @sp ROM:0000A746 ROM:0000A746 loc_A746: ; CODE XREF: eepromFactoryTest+58j ROM:0000A746 jsr wdt_maybe_pet:24 ROM:0000A74A sub.w e0, e0 ROM:0000A74C ROM:0000A74C loc_A74C: ; CODE XREF: eepromFactoryTest+36j ROM:0000A74C mov.w r5, r0 ; fill the chunk with values from 0x00 to 0xff for first 256 bytes, then 0x01..0x00 (loop around), etc ROM:0000A74E add.w e0, r0 ROM:0000A750 mov.b @sp, r1l ROM:0000A752 inc.b r1l ROM:0000A754 mov.b r1l, @sp ROM:0000A756 dec.b r1l ROM:0000A758 mov.b r1l, @er0 ROM:0000A75A inc.w #1, e0 ROM:0000A75C cmp.w #0x100, e0 ROM:0000A760 blt loc_A74C:8 ROM:0000A762 mov.w e6, r1 ; 256 bytes ROM:0000A764 mov.w r5, e0 ROM:0000A766 mov.w @(2:16,sp), r0 ROM:0000A76A jsr eepromWriteData:24 ; (r0 = eepromAddr, e0 = ramDataSrcPtr, r1 = len) ROM:0000A76E mov.w @(2:16,sp), r0 ROM:0000A772 add.w e6, r0 ; add 256 bytes to eeprom address ROM:0000A774 mov.w r0, @(2:16,sp) ROM:0000A778 mov.b @sp, r0l ROM:0000A77A inc.b r0l ROM:0000A77C mov.b r0l, @sp ROM:0000A77E mov.w @(2:16,sp), r0 ROM:0000A782 bne loc_A746:8 ; till end of EEPROM ROM:0000A784 mov.w e5, @(2:16,sp) ; reset pointer to flash ROM:0000A788 sub.b r0l, r0l ROM:0000A78A mov.b r0l, @sp ROM:0000A78C ROM:0000A78C loc_A78C: ; CODE XREF: eepromFactoryTest+AAj ROM:0000A78C jsr wdt_maybe_pet:24 ROM:0000A790 mov.w e6, r1 ROM:0000A792 mov.w r5, e0 ROM:0000A794 mov.w @(2:16,sp), r0 ROM:0000A798 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000A79C sub.w e0, e0 ROM:0000A79E bra loc_A7B8:8 ROM:0000A7A0 ; --------------------------------------------------------------------------- ROM:0000A7A0 ROM:0000A7A0 loc_A7A0: ; CODE XREF: eepromFactoryTest+92j ROM:0000A7A0 mov.w r5, r0 ROM:0000A7A2 add.w e0, r0 ROM:0000A7A4 mov.b @sp, r1l ROM:0000A7A6 inc.b r1l ROM:0000A7A8 mov.b r1l, @sp ROM:0000A7AA dec.b r1l ROM:0000A7AC mov.b @er0, r0l ROM:0000A7AE cmp.b r1l, r0l ROM:0000A7B0 beq loc_A7B6:8 ROM:0000A7B2 sub.b r0l, r0l ROM:0000A7B4 bra loc_A7FC:8 ROM:0000A7B6 ; --------------------------------------------------------------------------- ROM:0000A7B6 ROM:0000A7B6 loc_A7B6: ; CODE XREF: eepromFactoryTest+86j ROM:0000A7B6 inc.w #1, e0 ROM:0000A7B8 ROM:0000A7B8 loc_A7B8: ; CODE XREF: eepromFactoryTest+74j ROM:0000A7B8 cmp.w #0x100, e0 ROM:0000A7BC blt loc_A7A0:8 ROM:0000A7BE mov.w @(2:16,sp), r0 ROM:0000A7C2 add.w #0x100, r0 ROM:0000A7C6 mov.w r0, @(2:16,sp) ROM:0000A7CA mov.b @sp, r0l ROM:0000A7CC inc.b r0l ROM:0000A7CE mov.b r0l, @sp ROM:0000A7D0 mov.w @(2:16,sp), r0 ROM:0000A7D4 bne loc_A78C:8 ROM:0000A7D6 mov.w e5, @(2:16,sp) ROM:0000A7DA ROM:0000A7DA fillEepromWith0xFF: ; CODE XREF: eepromFactoryTest+CEj ROM:0000A7DA jsr wdt_maybe_pet:24 ROM:0000A7DE mov.b #0xFF, r1l ROM:0000A7E0 mov.w @(2:16,sp), r0 ROM:0000A7E4 jsr eepromFillPageWithByte:24 ; (r0 = eepromAddress, r1l = byte) ROM:0000A7E8 mov.w @(2:16,sp), r0 ROM:0000A7EC add.w #0x80, r0 ; 'Ç' ROM:0000A7F0 mov.w r0, @(2:16,sp) ROM:0000A7F4 mov.w @(2:16,sp), r0 ROM:0000A7F8 bne fillEepromWith0xFF:8 ROM:0000A7FA mov.b #1, r0l ROM:0000A7FC ROM:0000A7FC loc_A7FC: ; CODE XREF: eepromFactoryTest+8Aj ROM:0000A7FC adds #4, sp ROM:0000A7FE rts ROM:0000A7FE ; End of function eepromFactoryTest ROM:0000A7FE ROM:0000A800 ROM:0000A800 ; =============== S U B R O U T I N E ======================================= ROM:0000A800 ROM:0000A800 ; () -> bool success ROM:0000A800 ROM:0000A800 rtcFactoryTest: ; CODE XREF: factoryTestPerformIfNeeded+176p ROM:0000A800 sub.l er0, er0 ROM:0000A802 jsr rtcSet:24 ; (er0 = timeInSeconds) ROM:0000A806 mov.w #10000, r6 ROM:0000A80A ROM:0000A80A loc_A80A: ; CODE XREF: rtcFactoryTest+10j ROM:0000A80A jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A80E dec.w #1, r6 ROM:0000A810 bne loc_A80A:8 ROM:0000A812 ROM:0000A812 loc_A812: ; CODE XREF: rtcFactoryTest+16j ROM:0000A812 ; rtcFactoryTest+22j ROM:0000A812 mov.b @RTC_RSECDR:16, r0l ROM:0000A816 bmi loc_A812:8 ROM:0000A818 mov.b @RTC_RSECDR:16, r6l ROM:0000A81C mov.b @RTC_RSECDR:16, r6h ROM:0000A820 cmp.b r6h, r6l ROM:0000A822 bne loc_A812:8 ROM:0000A824 mov.b r6l, r6l ROM:0000A826 bne loc_A82C:8 ROM:0000A828 sub.b r0l, r0l ROM:0000A82A bra locret_A82E:8 ROM:0000A82C ; --------------------------------------------------------------------------- ROM:0000A82C ROM:0000A82C loc_A82C: ; CODE XREF: rtcFactoryTest+26j ROM:0000A82C mov.b #1, r0l ROM:0000A82E ROM:0000A82E locret_A82E: ; CODE XREF: rtcFactoryTest+2Aj ROM:0000A82E rts ROM:0000A82E ; End of function rtcFactoryTest ROM:0000A82E ROM:0000A830 ROM:0000A830 ; =============== S U B R O U T I N E ======================================= ROM:0000A830 ROM:0000A830 ROM:0000A830 accelFactoryTest: ; CODE XREF: factoryTestPerformIfNeeded+1BCp ROM:0000A830 sub.w #6, r7 ROM:0000A834 mov.w r7, r6 ROM:0000A836 jsr accelInit:24 ; bool () -> result in r0l ROM:0000A83A mov.b r0l, r0l ROM:0000A83C bne lcd_init_succeeded:8 ROM:0000A83E sub.b r0l, r0l ROM:0000A840 jmp loc_A8F2:24 ROM:0000A844 ; --------------------------------------------------------------------------- ROM:0000A844 ROM:0000A844 lcd_init_succeeded: ; CODE XREF: accelFactoryTest+Cj ROM:0000A844 mov.w r6, r5 ROM:0000A846 mov.b #1, r0h ROM:0000A848 mov.w r5, e0 ROM:0000A84A mov.b #0x14, r0l ROM:0000A84C jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:0000A850 mov.b @er6, r0l ROM:0000A852 and.b #0xE0, r0l ROM:0000A854 mov.b r0l, @er6 ROM:0000A856 bset #3, @er6 ROM:0000A85A mov.b @er6, r0h ROM:0000A85C mov.b #0x14, r0l ROM:0000A85E jsr accelRegWrite:24 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:0000A862 mov.w #0xA, r0 ROM:0000A866 jsr accelRegWrite:24 ; (r0l = reg no (first byte to send), r0h = value (second byte to send)) //manipulates nCS as needed ROM:0000A86A mov.w #0x1F4, e6 ROM:0000A86E bra loc_A876:8 ROM:0000A870 ; --------------------------------------------------------------------------- ROM:0000A870 ROM:0000A870 loc_A870: ; CODE XREF: accelFactoryTest+48j ROM:0000A870 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A874 dec.w #1, e6 ROM:0000A876 ROM:0000A876 loc_A876: ; CODE XREF: accelFactoryTest+3Ej ROM:0000A876 mov.w e6, e6 ROM:0000A878 bne loc_A870:8 ROM:0000A87A mov.w r5, e0 ROM:0000A87C mov.w #0x602, r0 ; 6 bytes at reg 2 ROM:0000A880 jsr accelRegRead:24 ; (r0l = regNo, r0h = numBytes, e0 = dstRamPtr) // 0x80 ORRed into regNo by this func ROM:0000A884 mov.b @(1:16,er6), r5l ROM:0000A888 bclr #0, @IO_PDR1:8 ; chip select for factory tool ROM:0000A88C ROM:0000A88C loc_A88C: ; CODE XREF: accelFactoryTest+62j ROM:0000A88C mov.b @SSU_SSSR:16, r0l ROM:0000A890 bld #2, r0l ROM:0000A892 bcc loc_A88C:8 ROM:0000A894 mov.b r5l, @SSU_SSTDR:16 ; send read byte 1 ROM:0000A898 ROM:0000A898 loc_A898: ; CODE XREF: accelFactoryTest+6Ej ROM:0000A898 mov.b @SSU_SSSR:16, r0l ROM:0000A89C bld #3, r0l ROM:0000A89E bcc loc_A898:8 ROM:0000A8A0 bset #0, @IO_PDR1:8 ROM:0000A8A4 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A8A8 mov.b @(3:16,er6), r5l ROM:0000A8AC bclr #0, @IO_PDR1:8 ROM:0000A8B0 ROM:0000A8B0 loc_A8B0: ; CODE XREF: accelFactoryTest+86j ROM:0000A8B0 mov.b @SSU_SSSR:16, r0l ROM:0000A8B4 bld #2, r0l ROM:0000A8B6 bcc loc_A8B0:8 ROM:0000A8B8 mov.b r5l, @SSU_SSTDR:16 ; send read byte 3 ROM:0000A8BC ROM:0000A8BC loc_A8BC: ; CODE XREF: accelFactoryTest+92j ROM:0000A8BC mov.b @SSU_SSSR:16, r0l ROM:0000A8C0 bld #3, r0l ROM:0000A8C2 bcc loc_A8BC:8 ROM:0000A8C4 bset #0, @IO_PDR1:8 ROM:0000A8C8 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A8CC mov.b @(5:16,er6), r5l ROM:0000A8D0 bclr #0, @IO_PDR1:8 ROM:0000A8D4 ROM:0000A8D4 loc_A8D4: ; CODE XREF: accelFactoryTest+AAj ROM:0000A8D4 mov.b @SSU_SSSR:16, r0l ROM:0000A8D8 bld #2, r0l ROM:0000A8DA bcc loc_A8D4:8 ROM:0000A8DC mov.b r5l, @SSU_SSTDR:16 ; send read byte 5 ROM:0000A8E0 ROM:0000A8E0 loc_A8E0: ; CODE XREF: accelFactoryTest+B6j ROM:0000A8E0 mov.b @SSU_SSSR:16, r0l ROM:0000A8E4 bld #3, r0l ROM:0000A8E6 bcc loc_A8E0:8 ROM:0000A8E8 bset #0, @IO_PDR1:8 ROM:0000A8EC jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A8F0 mov.b #1, r0l ROM:0000A8F2 ROM:0000A8F2 loc_A8F2: ; CODE XREF: accelFactoryTest+10j ROM:0000A8F2 add.w #6, r7 ROM:0000A8F6 rts ROM:0000A8F6 ; End of function accelFactoryTest ROM:0000A8F6 ROM:0000A8F8 ROM:0000A8F8 ; =============== S U B R O U T I N E ======================================= ROM:0000A8F8 ROM:0000A8F8 ROM:0000A8F8 adcFactoryTestAndCalibrate: ; CODE XREF: factoryTestPerformIfNeeded+1DEp ROM:0000A8F8 ROM:0000A8F8 var_1 = -1 ROM:0000A8F8 ROM:0000A8F8 subs #2, sp ROM:0000A8FA jsr adcSample:24 ; () -> r0 ROM:0000A8FE mov.w r0, @sp ROM:0000A900 mov.b @sp, r0h ROM:0000A902 bclr #0, @IO_PDR1:8 ROM:0000A906 ROM:0000A906 loc_A906: ; CODE XREF: adcFactoryTestAndCalibrate+14j ROM:0000A906 mov.b @SSU_SSSR:16, r0l ROM:0000A90A bld #2, r0l ROM:0000A90C bcc loc_A906:8 ROM:0000A90E mov.b r0h, @SSU_SSTDR:16 ; sent the adc sample hi word ROM:0000A912 ROM:0000A912 loc_A912: ; CODE XREF: adcFactoryTestAndCalibrate+20j ROM:0000A912 mov.b @SSU_SSSR:16, r0l ROM:0000A916 bld #3, r0l ROM:0000A918 bcc loc_A912:8 ROM:0000A91A bset #0, @IO_PDR1:8 ROM:0000A91E jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A922 mov.b @(1:16,sp), r0h ROM:0000A926 bclr #0, @IO_PDR1:8 ROM:0000A92A ROM:0000A92A loc_A92A: ; CODE XREF: adcFactoryTestAndCalibrate+38j ROM:0000A92A mov.b @SSU_SSSR:16, r0l ROM:0000A92E bld #2, r0l ROM:0000A930 bcc loc_A92A:8 ROM:0000A932 mov.b r0h, @SSU_SSTDR:16 ; send the adc sample lo word ROM:0000A936 ROM:0000A936 loc_A936: ; CODE XREF: adcFactoryTestAndCalibrate+44j ROM:0000A936 mov.b @SSU_SSSR:16, r0l ROM:0000A93A bld #3, r0l ROM:0000A93C bcc loc_A936:8 ROM:0000A93E bset #0, @IO_PDR1:8 ROM:0000A942 jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000A946 mov.w @sp, r0 ROM:0000A948 jsr checksumProtectAdcValue:24 ; (u16 val) -> u16 ROM:0000A948 ; ROM:0000A948 ; add values are actually only 12 bits (lower 12) ROM:0000A948 ; this adds a checksum to this adc value for safer EEPROM storage ROM:0000A948 ; 0x0XYZ -> 0xTXYZ, where T = (X + Y + Z) & 0x0f ROM:0000A94C mov.w r0, @sp ROM:0000A94E mov.w r7, r1 ROM:0000A950 mov.w #2, e1 ROM:0000A954 mov.l #0x1800080, er0 ROM:0000A95A jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000A95A ; ROM:0000A95A ; see docs for readRedundantDataFromEeprom for format info ROM:0000A95E adds #2, sp ROM:0000A960 rts ROM:0000A960 ; End of function adcFactoryTestAndCalibrate ROM:0000A960 ROM:0000A962 ROM:0000A962 ; =============== S U B R O U T I N E ======================================= ROM:0000A962 ROM:0000A962 ROM:0000A962 sub_A962: ; CODE XREF: drawSomethingWithTinyChars:loc_AD8Cp ROM:0000A962 mov.b #0x80, r0l ; 'Ç' ROM:0000A964 mov.b r0l, @SSU_SSER:16 ROM:0000A968 bclr #0, @IO_PDR1:8 ROM:0000A96C bset #1, @IO_PDR1:8 ROM:0000A970 sub.b r6h, r6h ROM:0000A972 ROM:0000A972 loc_A972: ; CODE XREF: sub_A962+CEj ROM:0000A972 mov.b r6h, r0h ROM:0000A974 sub.b r0l, r0l ROM:0000A976 jsr lcdRelatedWTF:24 ROM:0000A97A bset #1, @IO_PDR1:8 ROM:0000A97E sub.b r6l, r6l ROM:0000A980 ROM:0000A980 loc_A980: ; CODE XREF: sub_A962+BEj ROM:0000A980 mov.b r6l, r0l ROM:0000A982 extu.w r0 ROM:0000A984 exts.l er0 ROM:0000A986 mov.w #0x18, r1 ROM:0000A98A divxs.w r1, er0 ROM:0000A98E mov.b r0h, r0h ROM:0000A990 bne loc_AA1C:16 ROM:0000A994 cmp.b #0, r0l ROM:0000A996 beq loc_A9A6:8 ROM:0000A998 cmp.b #1, r0l ROM:0000A99A beq loc_A9C4:8 ROM:0000A99C cmp.b #2, r0l ROM:0000A99E beq loc_A9E2:8 ROM:0000A9A0 cmp.b #3, r0l ROM:0000A9A2 bne loc_AA1C:8 ROM:0000A9A4 bra loc_AA00:8 ROM:0000A9A6 ; --------------------------------------------------------------------------- ROM:0000A9A6 ROM:0000A9A6 loc_A9A6: ; CODE XREF: sub_A962+34j ROM:0000A9A6 ; sub_A962+4Aj ROM:0000A9A6 mov.b @SSU_SSSR:16, r0l ROM:0000A9AA bld #2, r0l ROM:0000A9AC bcc loc_A9A6:8 ROM:0000A9AE sub.b r0l, r0l ROM:0000A9B0 mov.b r0l, @SSU_SSTDR:16 ROM:0000A9B4 ROM:0000A9B4 loc_A9B4: ; CODE XREF: sub_A962+58j ROM:0000A9B4 mov.b @SSU_SSSR:16, r0l ROM:0000A9B8 bld #2, r0l ROM:0000A9BA bcc loc_A9B4:8 ROM:0000A9BC sub.b r0l, r0l ROM:0000A9BE mov.b r0l, @SSU_SSTDR:16 ROM:0000A9C2 bra loc_AA1C:8 ROM:0000A9C4 ; --------------------------------------------------------------------------- ROM:0000A9C4 ROM:0000A9C4 loc_A9C4: ; CODE XREF: sub_A962+38j ROM:0000A9C4 ; sub_A962+68j ROM:0000A9C4 mov.b @SSU_SSSR:16, r0l ROM:0000A9C8 bld #2, r0l ROM:0000A9CA bcc loc_A9C4:8 ROM:0000A9CC sub.b r0l, r0l ROM:0000A9CE mov.b r0l, @SSU_SSTDR:16 ROM:0000A9D2 ROM:0000A9D2 loc_A9D2: ; CODE XREF: sub_A962+76j ROM:0000A9D2 mov.b @SSU_SSSR:16, r0l ROM:0000A9D6 bld #2, r0l ROM:0000A9D8 bcc loc_A9D2:8 ROM:0000A9DA mov.b #0xFF, r0l ROM:0000A9DC mov.b r0l, @SSU_SSTDR:16 ROM:0000A9E0 bra loc_AA1C:8 ROM:0000A9E2 ; --------------------------------------------------------------------------- ROM:0000A9E2 ROM:0000A9E2 loc_A9E2: ; CODE XREF: sub_A962+3Cj ROM:0000A9E2 ; sub_A962+86j ROM:0000A9E2 mov.b @SSU_SSSR:16, r0l ROM:0000A9E6 bld #2, r0l ROM:0000A9E8 bcc loc_A9E2:8 ROM:0000A9EA mov.b #0xFF, r0l ROM:0000A9EC mov.b r0l, @SSU_SSTDR:16 ROM:0000A9F0 ROM:0000A9F0 loc_A9F0: ; CODE XREF: sub_A962+94j ROM:0000A9F0 mov.b @SSU_SSSR:16, r0l ROM:0000A9F4 bld #2, r0l ROM:0000A9F6 bcc loc_A9F0:8 ROM:0000A9F8 sub.b r0l, r0l ROM:0000A9FA mov.b r0l, @SSU_SSTDR:16 ROM:0000A9FE bra loc_AA1C:8 ROM:0000AA00 ; --------------------------------------------------------------------------- ROM:0000AA00 ROM:0000AA00 loc_AA00: ; CODE XREF: sub_A962+42j ROM:0000AA00 ; sub_A962+A4j ROM:0000AA00 mov.b @SSU_SSSR:16, r0l ROM:0000AA04 bld #2, r0l ROM:0000AA06 bcc loc_AA00:8 ROM:0000AA08 mov.b #0xFF, r0l ROM:0000AA0A mov.b r0l, @SSU_SSTDR:16 ROM:0000AA0E ROM:0000AA0E loc_AA0E: ; CODE XREF: sub_A962+B2j ROM:0000AA0E mov.b @SSU_SSSR:16, r0l ROM:0000AA12 bld #2, r0l ROM:0000AA14 bcc loc_AA0E:8 ROM:0000AA16 mov.b #0xFF, r0l ROM:0000AA18 mov.b r0l, @SSU_SSTDR:16 ROM:0000AA1C ROM:0000AA1C loc_AA1C: ; CODE XREF: sub_A962+2Ej ROM:0000AA1C ; sub_A962+40j ... ROM:0000AA1C inc.b r6l ROM:0000AA1E cmp.b #0x60, r6l ; '`' ROM:0000AA20 bcs loc_A980:16 ROM:0000AA24 ROM:0000AA24 loc_AA24: ; CODE XREF: sub_A962+C8j ROM:0000AA24 mov.b @SSU_SSSR:16, r0l ROM:0000AA28 bld #3, r0l ROM:0000AA2A bcc loc_AA24:8 ROM:0000AA2C inc.b r6h ROM:0000AA2E cmp.b #8, r6h ROM:0000AA30 bcs loc_A972:16 ROM:0000AA34 ROM:0000AA34 loc_AA34: ; CODE XREF: sub_A962+D8j ROM:0000AA34 mov.b @SSU_SSSR:16, r0l ROM:0000AA38 bld #3, r0l ROM:0000AA3A bcc loc_AA34:8 ROM:0000AA3C bset #0, @IO_PDR1:8 ROM:0000AA40 rts ROM:0000AA40 ; End of function sub_A962 ROM:0000AA40 ROM:0000AA42 ROM:0000AA42 ; =============== S U B R O U T I N E ======================================= ROM:0000AA42 ROM:0000AA42 ROM:0000AA42 sub_AA42: ; CODE XREF: performActionAsRequestedByRemote+78p ROM:0000AA42 sub.b r0l, r0l ROM:0000AA44 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000AA44 ; gifted items view: this is item number that has focus and arrow ROM:0000AA44 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AA44 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AA44 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AA48 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000AA48 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AA48 ; ItemScreenHandler: ROM:0000AA48 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AA48 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AA48 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AA48 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AA48 ; 0x0010 - light grey pokeball ROM:0000AA48 ; 0x0020 - tiny map icon ROM:0000AA48 ; 0x0040 - found item #0 (slot nonempty) ROM:0000AA48 ; 0x0080 - found item #1 (slot nonempty) ROM:0000AA48 ; 0x0100 - found item #2 (slot nonempty) ROM:0000AA48 ; 0x0200 - grey item icon ROM:0000AA48 ; ItemRXed - what was RXed ROM:0000AA48 ; 0 - event pokemon ROM:0000AA48 ; 1 - special route ROM:0000AA48 ; 2 - item ROM:0000AA48 ; 3 - special ROM:0000AA48 ; 4 - stamp: heart ROM:0000AA48 ; 5 - stamp: spade ROM:0000AA48 ; 6 - stamp: diamond ROM:0000AA48 ; 7 - stamp: club ROM:0000AA48 ; switch: ROM:0000AA48 ; zero - pokemon does ROM:0000AA48 ; nonzero - item needs to be switched ROM:0000AA48 ; item RXed: ROM:0000AA48 ; what sort of thing was RXed: item, map, route, etc ROM:0000AA4C mov.w #1, e0 ROM:0000AA50 mov.w e0, @gCurSubstateC:16 ROM:0000AA54 mov.b @RamCache_settingsByte:16, r0h ROM:0000AA58 and.b #0xF9, r0h ROM:0000AA5A or.b #4, r0h ROM:0000AA5C mov.b r0h, @RamCache_settingsByte:16 ROM:0000AA60 mov.b #2, r0l ROM:0000AA62 jsr likelysetVolume:24 ROM:0000AA66 mov.b #4, r0l ROM:0000AA68 jmp lcdSetContrast:24 ; (u8 contrast) //incremented y base_contrast_value ROM:0000AA68 ; End of function sub_AA42 ROM:0000AA68 ROM:0000AA6C ROM:0000AA6C ; =============== S U B R O U T I N E ======================================= ROM:0000AA6C ROM:0000AA6C ROM:0000AA6C interactionHandlerDebugMode22: ; CODE XREF: interactionHandler:case_0x16p ROM:0000AA6C mov.b #0x3C, r0l ; '<' ROM:0000AA6E mov.b r0l, @byte_FFF7AF:16 ROM:0000AA72 mov.b #0x1E, r0l ROM:0000AA74 mov.b r0l, @byte_FFF7B0:16 ROM:0000AA78 mov.b @gCurSubstateA:16, r1l ; Substate for various modes ROM:0000AA78 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AA78 ; ItemScreenHandler: ROM:0000AA78 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AA78 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AA78 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AA78 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AA78 ; 0x0010 - light grey pokeball ROM:0000AA78 ; 0x0020 - tiny map icon ROM:0000AA78 ; 0x0040 - found item #0 (slot nonempty) ROM:0000AA78 ; 0x0080 - found item #1 (slot nonempty) ROM:0000AA78 ; 0x0100 - found item #2 (slot nonempty) ROM:0000AA78 ; 0x0200 - grey item icon ROM:0000AA78 ; ItemRXed - what was RXed ROM:0000AA78 ; 0 - event pokemon ROM:0000AA78 ; 1 - special route ROM:0000AA78 ; 2 - item ROM:0000AA78 ; 3 - special ROM:0000AA78 ; 4 - stamp: heart ROM:0000AA78 ; 5 - stamp: spade ROM:0000AA78 ; 6 - stamp: diamond ROM:0000AA78 ; 7 - stamp: club ROM:0000AA78 ; switch: ROM:0000AA78 ; zero - pokemon does ROM:0000AA78 ; nonzero - item needs to be switched ROM:0000AA78 ; item RXed: ROM:0000AA78 ; what sort of thing was RXed: item, map, route, etc ROM:0000AA7C mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000AA7C ; gifted items view: this is item number that has focus and arrow ROM:0000AA7C ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AA7C ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AA7C ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AA80 cmp.b #0x12, r0l ROM:0000AA82 bhi locret_AC1C:16 ROM:0000AA86 extu.w r0 ROM:0000AA88 add.w r0, r0 ROM:0000AA8A mov.w @(JUMPTABLE_AA8A,er0), r0 ROM:0000AA8E jmp @er0 ROM:0000AA90 ; --------------------------------------------------------------------------- ROM:0000AA90 ROM:0000AA90 loc_AA90: ; DATA XREF: ROM:JUMPTABLE_AA8Ao ROM:0000AA90 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000AA90 ; battle: ROM:0000AA90 ; 0 - battle opening animation ROM:0000AA90 ; 1 - "XYZ appeared" message ROM:0000AA90 ; 2 - "attack evade catch" directions shown ROM:0000AA90 ; 3 - our action taken. details in gCurSubstateF ROM:0000AA90 ; 4 - poke action taken. details in gCurSubstateF ROM:0000AA90 ; 5 - "was too strong" ROM:0000AA90 ; 6 - we lost ROM:0000AA90 ; 7 - fled ROM:0000AA90 ; 8 - staredown ROM:0000AA90 ; 9 - almost had it ROM:0000AA90 ; 10 - "threw a pokeball" ROM:0000AA90 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000AA90 ; 12, 14 - pokeball flying ROM:0000AA90 ; 13 - pokeball flying ROM:0000AA90 ; 15 - catch animation plays ROM:0000AA90 ; 16 - caught! ROM:0000AA90 ; switcht: ROM:0000AA90 ; cur slected poke name ROM:0000AA94 beq locret_AC1C:16 ROM:0000AA98 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000AA98 ; gifted items view: this is item number that has focus and arrow ROM:0000AA98 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AA98 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AA98 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AA9C inc.b r0l ROM:0000AA9E mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000AA9E ; gifted items view: this is item number that has focus and arrow ROM:0000AA9E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AA9E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AA9E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AAA2 jmp locret_AC1C:24 ROM:0000AAA6 ; --------------------------------------------------------------------------- ROM:0000AAA6 ROM:0000AAA6 loc_AAA6: ; DATA XREF: ROM:0000BF2Co ROM:0000AAA6 ; ROM:0000BF2Eo ... ROM:0000AAA6 cmp.b #4, r1l ROM:0000AAA8 bcs locret_AC1C:16 ROM:0000AAAC mov.b #0xA, r0l ROM:0000AAAE jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000AAAE ; // 0x02 - enter ROM:0000AAAE ; // 0x04 - left ROM:0000AAAE ; // 0x08 - right ROM:0000AAB2 mov.b r0l, r0l ROM:0000AAB4 bne loc_ABC0:16 ROM:0000AAB8 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000AAB8 ; gifted items view: this is item number that has focus and arrow ROM:0000AAB8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AAB8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AAB8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AABC cmp.b #1, r0l ROM:0000AABE beq locret_AC1C:16 ROM:0000AAC2 mov.b #4, r0l ROM:0000AAC4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000AAC4 ; // 0x02 - enter ROM:0000AAC4 ; // 0x04 - left ROM:0000AAC4 ; // 0x08 - right ROM:0000AAC8 mov.b r0l, r0l ROM:0000AACA beq locret_AC1C:16 ROM:0000AACE mov.w #0xBFA2, r0 ROM:0000AAD2 jsr write_F7C4_clear_F7C8_and_F7CA:24 ; (r0 = value to write ) ROM:0000AAD6 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000AAD6 ; gifted items view: this is item number that has focus and arrow ROM:0000AAD6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AAD6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AAD6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AADA dec.b r0l ROM:0000AADC jmp loc_ABCE:24 ROM:0000AAE0 ; --------------------------------------------------------------------------- ROM:0000AAE0 ROM:0000AAE0 loc_AAE0: ; DATA XREF: ROM:0000BF38o ROM:0000AAE0 mov.b #4, r0l ROM:0000AAE2 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000AAE2 ; // 0x02 - enter ROM:0000AAE2 ; // 0x04 - left ROM:0000AAE2 ; // 0x08 - right ROM:0000AAE6 mov.b r0l, r0l ROM:0000AAE8 beq locret_AC1C:16 ROM:0000AAEC jmp loc_ABC0:24 ROM:0000AAF0 ; --------------------------------------------------------------------------- ROM:0000AAF0 ROM:0000AAF0 loc_AAF0: ; DATA XREF: ROM:0000BF3Ao ROM:0000AAF0 mov.b #2, r0l ROM:0000AAF2 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000AAF2 ; // 0x02 - enter ROM:0000AAF2 ; // 0x04 - left ROM:0000AAF2 ; // 0x08 - right ROM:0000AAF6 mov.b r0l, r0l ROM:0000AAF8 beq locret_AC1C:16 ROM:0000AAFC jmp loc_ABC0:24 ROM:0000AB00 ; --------------------------------------------------------------------------- ROM:0000AB00 ROM:0000AB00 loc_AB00: ; DATA XREF: ROM:0000BF3Co ROM:0000AB00 mov.b #8, r0l ROM:0000AB02 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000AB02 ; // 0x02 - enter ROM:0000AB02 ; // 0x04 - left ROM:0000AB02 ; // 0x08 - right ROM:0000AB06 mov.b r0l, r0l ROM:0000AB08 beq locret_AC1C:16 ROM:0000AB0C jmp loc_ABC0:24 ROM:0000AB10 ; --------------------------------------------------------------------------- ROM:0000AB10 ROM:0000AB10 loc_AB10: ; DATA XREF: ROM:0000BF3Eo ROM:0000AB10 cmp.b #2, r1l ROM:0000AB12 bcs locret_AC1C:16 ROM:0000AB16 jmp loc_ABC8:24 ROM:0000AB1A ; --------------------------------------------------------------------------- ROM:0000AB1A ROM:0000AB1A loc_AB1A: ; CODE XREF: interactionHandlerDebugMode22+B2j ROM:0000AB1A ; interactionHandlerDebugMode22+BEj ROM:0000AB1A ; DATA XREF: ... ROM:0000AB1A mov.b @RTC_RSECDR:16, r0l ROM:0000AB1E bmi loc_AB1A:8 ROM:0000AB20 mov.b @RTC_RSECDR:16, r1l ROM:0000AB24 mov.b @RTC_RSECDR:16, r0l ROM:0000AB28 cmp.b r0l, r1l ROM:0000AB2A bne loc_AB1A:8 ROM:0000AB2C mov.b r1l, @gCurSubstateA+1:16 ; Substate for various modes ROM:0000AB2C ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AB2C ; ItemScreenHandler: ROM:0000AB2C ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AB2C ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AB2C ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AB2C ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AB2C ; 0x0010 - light grey pokeball ROM:0000AB2C ; 0x0020 - tiny map icon ROM:0000AB2C ; 0x0040 - found item #0 (slot nonempty) ROM:0000AB2C ; 0x0080 - found item #1 (slot nonempty) ROM:0000AB2C ; 0x0100 - found item #2 (slot nonempty) ROM:0000AB2C ; 0x0200 - grey item icon ROM:0000AB2C ; ItemRXed - what was RXed ROM:0000AB2C ; 0 - event pokemon ROM:0000AB2C ; 1 - special route ROM:0000AB2C ; 2 - item ROM:0000AB2C ; 3 - special ROM:0000AB2C ; 4 - stamp: heart ROM:0000AB2C ; 5 - stamp: spade ROM:0000AB2C ; 6 - stamp: diamond ROM:0000AB2C ; 7 - stamp: club ROM:0000AB2C ; switch: ROM:0000AB2C ; zero - pokemon does ROM:0000AB2C ; nonzero - item needs to be switched ROM:0000AB2C ; item RXed: ROM:0000AB2C ; what sort of thing was RXed: item, map, route, etc ROM:0000AB30 mov.w #0x300, r0 ROM:0000AB34 jsr eepromFactoryTest:24 ; (r0 = eepromAddrForStart) -> bool success in r0l ROM:0000AB34 ; wipes all eeprom after the given address, which must be a factor of 256 ROM:0000AB38 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000AB38 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AB3C mov.w #0x101, r0 ROM:0000AB40 jsr some_sort_of_eeprom_init:24 ; (bool r0l = wipeOutEventBitfield, bool r0h = wipeOutStepsAtLastSync) ROM:0000AB44 ROM:0000AB44 loc_AB44: ; CODE XREF: interactionHandlerDebugMode22+DCj ROM:0000AB44 ; interactionHandlerDebugMode22+E8j ROM:0000AB44 mov.b @RTC_RSECDR:16, r0l ROM:0000AB48 bmi loc_AB44:8 ROM:0000AB4A mov.b @RTC_RSECDR:16, r1l ROM:0000AB4E mov.b @RTC_RSECDR:16, r0l ROM:0000AB52 cmp.b r0l, r1l ROM:0000AB54 bne loc_AB44:8 ROM:0000AB56 mov.b r1l, @gCurSubstateB:16 ; Substate: ROM:0000AB56 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AB5A bra loc_ABC8:8 ROM:0000AB5C ; --------------------------------------------------------------------------- ROM:0000AB5C ROM:0000AB5C loc_AB5C: ; DATA XREF: ROM:0000BF42o ROM:0000AB5C mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000AB5C ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AB60 beq locret_AC1C:16 ROM:0000AB64 cmp.b #4, r1l ROM:0000AB66 bcs locret_AC1C:16 ROM:0000AB6A bra loc_ABC0:8 ROM:0000AB6C ; --------------------------------------------------------------------------- ROM:0000AB6C ROM:0000AB6C loc_AB6C: ; DATA XREF: ROM:0000BF44o ROM:0000AB6C mov.w #2, e1 ROM:0000AB70 mov.w #gCurSubstateC, r1 ROM:0000AB74 mov.l #0x1800080, er0 ROM:0000AB7A jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000AB7A ; ROM:0000AB7A ; data is stored in two provided locations and read to RAM ROM:0000AB7A ; each location includes a checksum right after the data (not inluded in length) ROM:0000AB7A ; ROM:0000AB7A ; if only one location has checksum-valid data, other is replaced with it ROM:0000AB7A ; ROM:0000AB7A ; if both appear valid, #0 is assumed dominant ROM:0000AB7A ; ROM:0000AB7A ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000AB7E mov.w @gCurSubstateC:16, r0 ROM:0000AB82 jsr adcClibrationDataVerifySelfChecksum:24 ; (r0 = word) -> r0l bool success ROM:0000AB86 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000AB86 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AB8A mov.w @gCurSubstateC:16, r0 ROM:0000AB8E bne loc_ABC8:8 ROM:0000AB90 sub.b r0l, r0l ROM:0000AB92 bra loc_ABB4:8 ROM:0000AB94 ; --------------------------------------------------------------------------- ROM:0000AB94 ROM:0000AB94 loc_AB94: ; DATA XREF: ROM:0000BF46o ROM:0000AB94 mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000AB94 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AB98 beq locret_AC1C:16 ROM:0000AB9C cmp.b #4, r1l ROM:0000AB9E bcs locret_AC1C:8 ROM:0000ABA0 bra loc_ABC0:8 ROM:0000ABA2 ; --------------------------------------------------------------------------- ROM:0000ABA2 ROM:0000ABA2 loc_ABA2: ; DATA XREF: ROM:0000BF48o ROM:0000ABA2 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000ABA2 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000ABA2 ; ItemScreenHandler: ROM:0000ABA2 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000ABA2 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000ABA2 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000ABA2 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000ABA2 ; 0x0010 - light grey pokeball ROM:0000ABA2 ; 0x0020 - tiny map icon ROM:0000ABA2 ; 0x0040 - found item #0 (slot nonempty) ROM:0000ABA2 ; 0x0080 - found item #1 (slot nonempty) ROM:0000ABA2 ; 0x0100 - found item #2 (slot nonempty) ROM:0000ABA2 ; 0x0200 - grey item icon ROM:0000ABA2 ; ItemRXed - what was RXed ROM:0000ABA2 ; 0 - event pokemon ROM:0000ABA2 ; 1 - special route ROM:0000ABA2 ; 2 - item ROM:0000ABA2 ; 3 - special ROM:0000ABA2 ; 4 - stamp: heart ROM:0000ABA2 ; 5 - stamp: spade ROM:0000ABA2 ; 6 - stamp: diamond ROM:0000ABA2 ; 7 - stamp: club ROM:0000ABA2 ; switch: ROM:0000ABA2 ; zero - pokemon does ROM:0000ABA2 ; nonzero - item needs to be switched ROM:0000ABA2 ; item RXed: ROM:0000ABA2 ; what sort of thing was RXed: item, map, route, etc ROM:0000ABA6 mov.b @gCurSubstateB:16, r0h ; Substate: ROM:0000ABA6 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000ABAA cmp.b r0h, r0l ROM:0000ABAC beq locret_AC1C:8 ROM:0000ABAE bra loc_ABC0:8 ROM:0000ABB0 ; --------------------------------------------------------------------------- ROM:0000ABB0 ROM:0000ABB0 loc_ABB0: ; DATA XREF: ROM:0000BF4Ao ROM:0000ABB0 jsr accelInit:24 ; bool () -> result in r0l ROM:0000ABB4 ROM:0000ABB4 loc_ABB4: ; CODE XREF: interactionHandlerDebugMode22+126j ROM:0000ABB4 mov.b r0l, @gCurSubstateB+1:16 ; Substate: ROM:0000ABB4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000ABB8 bra loc_ABC8:8 ROM:0000ABBA ; --------------------------------------------------------------------------- ROM:0000ABBA ROM:0000ABBA loc_ABBA: ; DATA XREF: ROM:0000BF4Co ROM:0000ABBA mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000ABBA ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000ABBE beq locret_AC1C:8 ROM:0000ABC0 ROM:0000ABC0 loc_ABC0: ; CODE XREF: interactionHandlerDebugMode22+48j ROM:0000ABC0 ; interactionHandlerDebugMode22+80j ... ROM:0000ABC0 mov.w #0xBFA2, r0 ROM:0000ABC4 jsr write_F7C4_clear_F7C8_and_F7CA:24 ; (r0 = value to write ) ROM:0000ABC8 ROM:0000ABC8 loc_ABC8: ; CODE XREF: interactionHandlerDebugMode22+AAj ROM:0000ABC8 ; interactionHandlerDebugMode22+EEj ... ROM:0000ABC8 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000ABC8 ; gifted items view: this is item number that has focus and arrow ROM:0000ABC8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000ABC8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000ABC8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000ABCC inc.b r0l ROM:0000ABCE ROM:0000ABCE loc_ABCE: ; CODE XREF: interactionHandlerDebugMode22+70j ROM:0000ABCE mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000ABCE ; gifted items view: this is item number that has focus and arrow ROM:0000ABCE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000ABCE ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000ABCE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000ABD2 sub.b r0l, r0l ROM:0000ABD4 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000ABD4 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000ABD4 ; ItemScreenHandler: ROM:0000ABD4 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000ABD4 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000ABD4 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000ABD4 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000ABD4 ; 0x0010 - light grey pokeball ROM:0000ABD4 ; 0x0020 - tiny map icon ROM:0000ABD4 ; 0x0040 - found item #0 (slot nonempty) ROM:0000ABD4 ; 0x0080 - found item #1 (slot nonempty) ROM:0000ABD4 ; 0x0100 - found item #2 (slot nonempty) ROM:0000ABD4 ; 0x0200 - grey item icon ROM:0000ABD4 ; ItemRXed - what was RXed ROM:0000ABD4 ; 0 - event pokemon ROM:0000ABD4 ; 1 - special route ROM:0000ABD4 ; 2 - item ROM:0000ABD4 ; 3 - special ROM:0000ABD4 ; 4 - stamp: heart ROM:0000ABD4 ; 5 - stamp: spade ROM:0000ABD4 ; 6 - stamp: diamond ROM:0000ABD4 ; 7 - stamp: club ROM:0000ABD4 ; switch: ROM:0000ABD4 ; zero - pokemon does ROM:0000ABD4 ; nonzero - item needs to be switched ROM:0000ABD4 ; item RXed: ROM:0000ABD4 ; what sort of thing was RXed: item, map, route, etc ROM:0000ABD8 bra locret_AC1C:8 ROM:0000ABDA ; --------------------------------------------------------------------------- ROM:0000ABDA ROM:0000ABDA loc_ABDA: ; DATA XREF: ROM:0000BF4Eo ROM:0000ABDA cmp.b #4, r1l ROM:0000ABDC bcs locret_AC1C:8 ROM:0000ABDE mov.b #0xE, r0l ROM:0000ABE0 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000ABE0 ; // 0x02 - enter ROM:0000ABE0 ; // 0x04 - left ROM:0000ABE0 ; // 0x08 - right ROM:0000ABE4 mov.b r0l, r0l ROM:0000ABE6 beq locret_AC1C:8 ROM:0000ABE8 bclr #0, @IO_PDR1:8 ROM:0000ABEC bclr #1, @IO_PDR1:8 ROM:0000ABF0 ROM:0000ABF0 loc_ABF0: ; CODE XREF: interactionHandlerDebugMode22+18Aj ROM:0000ABF0 mov.b @SSU_SSSR:16, r0l ROM:0000ABF4 bld #2, r0l ROM:0000ABF6 bcc loc_ABF0:8 ROM:0000ABF8 mov.b #0xA6, r0l ; 'ª' ROM:0000ABFA mov.b r0l, @SSU_SSTDR:16 ROM:0000ABFE ROM:0000ABFE loc_ABFE: ; CODE XREF: interactionHandlerDebugMode22+198j ROM:0000ABFE mov.b @SSU_SSSR:16, r0l ROM:0000AC02 bld #3, r0l ROM:0000AC04 bcc loc_ABFE:8 ROM:0000AC06 bset #0, @IO_PDR1:8 ROM:0000AC0A mov.b #0x17, r0l ROM:0000AC0C mov.b r0l, @currentlyActiveView:16 ROM:0000AC10 jsr sub_AEBC:24 ROM:0000AC14 mov.w #0xBFA2, r0 ROM:0000AC18 jsr write_F7C4_clear_F7C8_and_F7CA:24 ; (r0 = value to write ) ROM:0000AC1C ROM:0000AC1C locret_AC1C: ; CODE XREF: interactionHandlerDebugMode22+16j ROM:0000AC1C ; interactionHandlerDebugMode22+28j ... ROM:0000AC1C rts ROM:0000AC1C ; End of function interactionHandlerDebugMode22 ROM:0000AC1C ROM:0000AC1E ROM:0000AC1E ; =============== S U B R O U T I N E ======================================= ROM:0000AC1E ROM:0000AC1E ROM:0000AC1E sub_AC1E: ; CODE XREF: drawSomethingWithTinyChars:loc_AD84p ROM:0000AC1E mov.b #0x80, r0l ; 'Ç' ROM:0000AC20 mov.b r0l, @SSU_SSER:16 ROM:0000AC24 bclr #0, @IO_PDR1:8 ROM:0000AC28 mov.w #1, r0 ROM:0000AC2C jsr lcdRelatedWTF:24 ROM:0000AC30 bset #1, @IO_PDR1:8 ROM:0000AC34 mov.w #0xBC, r6 ; '+' ROM:0000AC38 bra loc_AC4A:8 ROM:0000AC3A ; --------------------------------------------------------------------------- ROM:0000AC3A ROM:0000AC3A loc_AC3A: ; CODE XREF: sub_AC1E+22j ROM:0000AC3A ; sub_AC1E+2Ej ROM:0000AC3A mov.b @SSU_SSSR:16, r0l ROM:0000AC3E bld #2, r0l ROM:0000AC40 bcc loc_AC3A:8 ROM:0000AC42 mov.b #1, r0l ROM:0000AC44 mov.b r0l, @SSU_SSTDR:16 ROM:0000AC48 dec.w #1, r6 ROM:0000AC4A ROM:0000AC4A loc_AC4A: ; CODE XREF: sub_AC1E+1Aj ROM:0000AC4A mov.w r6, r6 ROM:0000AC4C bne loc_AC3A:8 ROM:0000AC4E ROM:0000AC4E loc_AC4E: ; CODE XREF: sub_AC1E+36j ROM:0000AC4E mov.b @SSU_SSSR:16, r0l ROM:0000AC52 bld #3, r0l ROM:0000AC54 bcc loc_AC4E:8 ROM:0000AC56 sub.w r6, r6 ROM:0000AC58 ROM:0000AC58 loc_AC58: ; CODE XREF: sub_AC1E+70j ROM:0000AC58 mov.b r6l, r0h ROM:0000AC5A sub.b r0l, r0l ROM:0000AC5C jsr lcdRelatedWTF:24 ROM:0000AC60 bset #1, @IO_PDR1:8 ROM:0000AC64 ROM:0000AC64 loc_AC64: ; CODE XREF: sub_AC1E+4Cj ROM:0000AC64 mov.b @SSU_SSSR:16, r0l ROM:0000AC68 bld #2, r0l ROM:0000AC6A bcc loc_AC64:8 ROM:0000AC6C mov.b #0xFF, r0l ROM:0000AC6E mov.b r0l, @SSU_SSTDR:16 ROM:0000AC72 ROM:0000AC72 loc_AC72: ; CODE XREF: sub_AC1E+5Aj ROM:0000AC72 mov.b @SSU_SSSR:16, r0l ROM:0000AC76 bld #2, r0l ROM:0000AC78 bcc loc_AC72:8 ROM:0000AC7A mov.b #0xFF, r0l ROM:0000AC7C mov.b r0l, @SSU_SSTDR:16 ROM:0000AC80 ROM:0000AC80 loc_AC80: ; CODE XREF: sub_AC1E+68j ROM:0000AC80 mov.b @SSU_SSSR:16, r0l ROM:0000AC84 bld #3, r0l ROM:0000AC86 bcc loc_AC80:8 ROM:0000AC88 inc.w #1, r6 ROM:0000AC8A cmp.w #8, r6 ROM:0000AC8E blt loc_AC58:8 ROM:0000AC90 sub.w r6, r6 ROM:0000AC92 ROM:0000AC92 loc_AC92: ; CODE XREF: sub_AC1E+AAj ROM:0000AC92 mov.b r6l, r0h ROM:0000AC94 mov.b #0x5F, r0l ; '_' ROM:0000AC96 jsr lcdRelatedWTF:24 ROM:0000AC9A bset #1, @IO_PDR1:8 ROM:0000AC9E ROM:0000AC9E loc_AC9E: ; CODE XREF: sub_AC1E+86j ROM:0000AC9E mov.b @SSU_SSSR:16, r0l ROM:0000ACA2 bld #2, r0l ROM:0000ACA4 bcc loc_AC9E:8 ROM:0000ACA6 mov.b #0xFF, r0l ROM:0000ACA8 mov.b r0l, @SSU_SSTDR:16 ROM:0000ACAC ROM:0000ACAC loc_ACAC: ; CODE XREF: sub_AC1E+94j ROM:0000ACAC mov.b @SSU_SSSR:16, r0l ROM:0000ACB0 bld #2, r0l ROM:0000ACB2 bcc loc_ACAC:8 ROM:0000ACB4 mov.b #0xFF, r0l ROM:0000ACB6 mov.b r0l, @SSU_SSTDR:16 ROM:0000ACBA ROM:0000ACBA loc_ACBA: ; CODE XREF: sub_AC1E+A2j ROM:0000ACBA mov.b @SSU_SSSR:16, r0l ROM:0000ACBE bld #3, r0l ROM:0000ACC0 bcc loc_ACBA:8 ROM:0000ACC2 inc.w #1, r6 ROM:0000ACC4 cmp.w #8, r6 ROM:0000ACC8 blt loc_AC92:8 ROM:0000ACCA mov.w #0x701, r0 ROM:0000ACCE jsr lcdRelatedWTF:24 ROM:0000ACD2 bset #1, @IO_PDR1:8 ROM:0000ACD6 mov.w #0xBC, r6 ; '+' ROM:0000ACDA bra loc_ACEC:8 ROM:0000ACDC ; --------------------------------------------------------------------------- ROM:0000ACDC ROM:0000ACDC loc_ACDC: ; CODE XREF: sub_AC1E+C4j ROM:0000ACDC ; sub_AC1E+D0j ROM:0000ACDC mov.b @SSU_SSSR:16, r0l ROM:0000ACE0 bld #2, r0l ROM:0000ACE2 bcc loc_ACDC:8 ROM:0000ACE4 mov.b #0x80, r0l ; 'Ç' ROM:0000ACE6 mov.b r0l, @SSU_SSTDR:16 ROM:0000ACEA dec.w #1, r6 ROM:0000ACEC ROM:0000ACEC loc_ACEC: ; CODE XREF: sub_AC1E+BCj ROM:0000ACEC mov.w r6, r6 ROM:0000ACEE bne loc_ACDC:8 ROM:0000ACF0 ROM:0000ACF0 loc_ACF0: ; CODE XREF: sub_AC1E+D8j ROM:0000ACF0 mov.b @SSU_SSSR:16, r0l ROM:0000ACF4 bld #3, r0l ROM:0000ACF6 bcc loc_ACF0:8 ROM:0000ACF8 ROM:0000ACF8 loc_ACF8: ; CODE XREF: sub_AC1E+E0j ROM:0000ACF8 mov.b @SSU_SSSR:16, r0l ROM:0000ACFC bld #3, r0l ROM:0000ACFE bcc loc_ACF8:8 ROM:0000AD00 bset #0, @IO_PDR1:8 ROM:0000AD04 rts ROM:0000AD04 ; End of function sub_AC1E ROM:0000AD04 ROM:0000AD06 ROM:0000AD06 ; =============== S U B R O U T I N E ======================================= ROM:0000AD06 ROM:0000AD06 ROM:0000AD06 drawSomethingWithTinyChars: ; CODE XREF: maybe_viewDoDisplay:case__0x16p ROM:0000AD06 sub.w #6, r7 ROM:0000AD0A mov.w #drawTinyChars, r5 ; (r0l = x, r0h = y, e0 = char*) ROM:0000AD0E mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000AD0E ; gifted items view: this is item number that has focus and arrow ROM:0000AD0E ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AD0E ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AD0E ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AD12 cmp.b #0x12, r0l ROM:0000AD14 bhi loc_AEA8:16 ROM:0000AD18 extu.w r0 ROM:0000AD1A add.w r0, r0 ROM:0000AD1C mov.w @(JUMPTABLE_AD1C,er0), r0 ROM:0000AD20 jmp @er0 ROM:0000AD22 ; --------------------------------------------------------------------------- ROM:0000AD22 ROM:0000AD22 loc_AD22: ; DATA XREF: ROM:JUMPTABLE_AD1Co ROM:0000AD22 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000AD22 ; battle: ROM:0000AD22 ; 0 - battle opening animation ROM:0000AD22 ; 1 - "XYZ appeared" message ROM:0000AD22 ; 2 - "attack evade catch" directions shown ROM:0000AD22 ; 3 - our action taken. details in gCurSubstateF ROM:0000AD22 ; 4 - poke action taken. details in gCurSubstateF ROM:0000AD22 ; 5 - "was too strong" ROM:0000AD22 ; 6 - we lost ROM:0000AD22 ; 7 - fled ROM:0000AD22 ; 8 - staredown ROM:0000AD22 ; 9 - almost had it ROM:0000AD22 ; 10 - "threw a pokeball" ROM:0000AD22 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000AD22 ; 12, 14 - pokeball flying ROM:0000AD22 ; 13 - pokeball flying ROM:0000AD22 ; 15 - catch animation plays ROM:0000AD22 ; 16 - caught! ROM:0000AD22 ; switcht: ROM:0000AD22 ; cur slected poke name ROM:0000AD26 bne loc_AEA8:16 ROM:0000AD2A mov.w #aNg1, e0 ; "NG1" ROM:0000AD2E jmp loc_ADEA:24 ROM:0000AD32 ; --------------------------------------------------------------------------- ROM:0000AD32 ROM:0000AD32 loc_AD32: ; DATA XREF: ROM:0000BF64o ROM:0000AD32 ; ROM:0000BF66o ROM:0000AD32 mov.w #aEep, e0 ; "EEP" ROM:0000AD36 jmp loc_ADEA:24 ROM:0000AD3A ; --------------------------------------------------------------------------- ROM:0000AD3A ROM:0000AD3A loc_AD3A: ; DATA XREF: ROM:0000BF68o ROM:0000AD3A mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000AD3A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AD3E bne loc_AEA8:16 ROM:0000AD42 mov.w #aNg2, e0 ; "NG2" ROM:0000AD46 jmp loc_ADEA:24 ROM:0000AD4A ; --------------------------------------------------------------------------- ROM:0000AD4A ROM:0000AD4A loc_AD4A: ; DATA XREF: ROM:0000BF6Co ROM:0000AD4A mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000AD4A ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AD4E bne loc_AEA8:16 ROM:0000AD52 mov.w #aNg3, e0 ; "NG3" ROM:0000AD56 jmp loc_ADEA:24 ROM:0000AD5A ; --------------------------------------------------------------------------- ROM:0000AD5A ROM:0000AD5A loc_AD5A: ; DATA XREF: ROM:0000BF6Eo ROM:0000AD5A mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000AD5A ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AD5A ; ItemScreenHandler: ROM:0000AD5A ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AD5A ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AD5A ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AD5A ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AD5A ; 0x0010 - light grey pokeball ROM:0000AD5A ; 0x0020 - tiny map icon ROM:0000AD5A ; 0x0040 - found item #0 (slot nonempty) ROM:0000AD5A ; 0x0080 - found item #1 (slot nonempty) ROM:0000AD5A ; 0x0100 - found item #2 (slot nonempty) ROM:0000AD5A ; 0x0200 - grey item icon ROM:0000AD5A ; ItemRXed - what was RXed ROM:0000AD5A ; 0 - event pokemon ROM:0000AD5A ; 1 - special route ROM:0000AD5A ; 2 - item ROM:0000AD5A ; 3 - special ROM:0000AD5A ; 4 - stamp: heart ROM:0000AD5A ; 5 - stamp: spade ROM:0000AD5A ; 6 - stamp: diamond ROM:0000AD5A ; 7 - stamp: club ROM:0000AD5A ; switch: ROM:0000AD5A ; zero - pokemon does ROM:0000AD5A ; nonzero - item needs to be switched ROM:0000AD5A ; item RXed: ROM:0000AD5A ; what sort of thing was RXed: item, map, route, etc ROM:0000AD5E mov.b @gCurSubstateB:16, r0h ; Substate: ROM:0000AD5E ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AD62 cmp.b r0h, r0l ROM:0000AD64 bne loc_AEA8:16 ROM:0000AD68 mov.w #aNg4, e0 ; "NG4" ROM:0000AD6C bra loc_ADEA:8 ROM:0000AD6E ; --------------------------------------------------------------------------- ROM:0000AD6E ROM:0000AD6E loc_AD6E: ; DATA XREF: ROM:0000BF52o ROM:0000AD6E mov.b #3, r0l ROM:0000AD70 bra loc_AD7C:8 ROM:0000AD72 ; --------------------------------------------------------------------------- ROM:0000AD72 ROM:0000AD72 loc_AD72: ; DATA XREF: ROM:0000BF54o ROM:0000AD72 mov.b #2, r0l ROM:0000AD74 bra loc_AD7C:8 ROM:0000AD76 ; --------------------------------------------------------------------------- ROM:0000AD76 ROM:0000AD76 loc_AD76: ; DATA XREF: ROM:0000BF56o ROM:0000AD76 mov.b #1, r0l ROM:0000AD78 bra loc_AD7C:8 ROM:0000AD7A ; --------------------------------------------------------------------------- ROM:0000AD7A ROM:0000AD7A loc_AD7A: ; DATA XREF: ROM:0000BF58o ROM:0000AD7A sub.b r0l, r0l ROM:0000AD7C ROM:0000AD7C loc_AD7C: ; CODE XREF: drawSomethingWithTinyChars+6Aj ROM:0000AD7C ; drawSomethingWithTinyChars+6Ej ... ROM:0000AD7C jsr lcdRelatedWTFZYX:24 ROM:0000AD80 jmp loc_AEA8:24 ROM:0000AD84 ; --------------------------------------------------------------------------- ROM:0000AD84 ROM:0000AD84 loc_AD84: ; DATA XREF: ROM:0000BF5Ao ROM:0000AD84 jsr sub_AC1E:24 ROM:0000AD88 jmp loc_AEA8:24 ROM:0000AD8C ; --------------------------------------------------------------------------- ROM:0000AD8C ROM:0000AD8C loc_AD8C: ; DATA XREF: ROM:0000BF5Co ROM:0000AD8C jsr sub_A962:24 ROM:0000AD90 jmp loc_AEA8:24 ROM:0000AD94 ; --------------------------------------------------------------------------- ROM:0000AD94 ROM:0000AD94 loc_AD94: ; DATA XREF: ROM:0000BF5Eo ROM:0000AD94 mov.b @curUiFlags:16, r0l ; bits: ROM:0000AD94 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000AD94 ; 0x02 - slower animation frame ROM:0000AD98 extu.w r0 ROM:0000AD9A shar.w r0 ROM:0000AD9C btst #0, r0l ROM:0000AD9E bne loc_AEA8:16 ROM:0000ADA2 mov.w #aV, e0 ; "V" ROM:0000ADA6 mov.w #0x3806, r0 ROM:0000ADAA jmp loc_AEA6:24 ROM:0000ADAE ; --------------------------------------------------------------------------- ROM:0000ADAE ROM:0000ADAE loc_ADAE: ; DATA XREF: ROM:0000BF60o ROM:0000ADAE mov.b @curUiFlags:16, r0l ; bits: ROM:0000ADAE ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000ADAE ; 0x02 - slower animation frame ROM:0000ADB2 extu.w r0 ROM:0000ADB4 shar.w r0 ROM:0000ADB6 btst #0, r0l ROM:0000ADB8 bne loc_AEA8:16 ROM:0000ADBC mov.w #aV, e0 ; "V" ROM:0000ADC0 mov.w #0x382D, r0 ROM:0000ADC4 jmp loc_AEA6:24 ROM:0000ADC8 ; --------------------------------------------------------------------------- ROM:0000ADC8 ROM:0000ADC8 loc_ADC8: ; DATA XREF: ROM:0000BF62o ROM:0000ADC8 mov.b @curUiFlags:16, r0l ; bits: ROM:0000ADC8 ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000ADC8 ; 0x02 - slower animation frame ROM:0000ADCC extu.w r0 ROM:0000ADCE shar.w r0 ROM:0000ADD0 btst #0, r0l ROM:0000ADD2 bne loc_AEA8:16 ROM:0000ADD6 mov.w #aV, e0 ; "V" ROM:0000ADDA jmp loc_AEA2:24 ROM:0000ADDE ; --------------------------------------------------------------------------- ROM:0000ADDE ROM:0000ADDE loc_ADDE: ; DATA XREF: ROM:0000BF72o ROM:0000ADDE mov.b @gCurSubstateB+1:16, r0l ; Substate: ROM:0000ADDE ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000ADE2 bne loc_AEA8:16 ROM:0000ADE6 mov.w #aNg5, e0 ; "NG5" ROM:0000ADEA ROM:0000ADEA loc_ADEA: ; CODE XREF: drawSomethingWithTinyChars+28j ROM:0000ADEA ; drawSomethingWithTinyChars+30j ... ROM:0000ADEA mov.w #0x820, r0 ROM:0000ADEE jmp loc_AEA6:24 ROM:0000ADF2 ; --------------------------------------------------------------------------- ROM:0000ADF2 ROM:0000ADF2 loc_ADF2: ; DATA XREF: ROM:0000BF74o ROM:0000ADF2 bclr #0, @IO_PDR1:8 ROM:0000ADF6 bclr #1, @IO_PDR1:8 ROM:0000ADFA ROM:0000ADFA loc_ADFA: ; CODE XREF: drawSomethingWithTinyChars+FAj ROM:0000ADFA mov.b @SSU_SSSR:16, r0l ROM:0000ADFE bld #2, r0l ROM:0000AE00 bcc loc_ADFA:8 ROM:0000AE02 mov.b #0xA7, r0l ; 'º' ROM:0000AE04 mov.b r0l, @SSU_SSTDR:16 ROM:0000AE08 ROM:0000AE08 loc_AE08: ; CODE XREF: drawSomethingWithTinyChars+108j ROM:0000AE08 mov.b @SSU_SSSR:16, r0l ROM:0000AE0C bld #3, r0l ROM:0000AE0E bcc loc_AE08:8 ROM:0000AE10 bset #0, @IO_PDR1:8 ROM:0000AE14 mov.w #aOk, e0 ; "OK" ROM:0000AE18 mov.w #0x20, r0 ; ' ' ROM:0000AE1C jsr @er5 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AE1E mov.w r7, r6 ROM:0000AE20 sub.b r0l, r0l ROM:0000AE22 mov.b r0l, @(4:16,er6) ROM:0000AE26 mov.w @gCurSubstateC:16, r0 ROM:0000AE2A mov.w #0x1000, r1 ROM:0000AE2E extu.l er0 ROM:0000AE30 divxu.w r1, er0 ROM:0000AE32 and.w #0xF, r0 ROM:0000AE36 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AE3A mov.b r0l, @er6 ROM:0000AE3C mov.b @gCurSubstateC:16, r0l ROM:0000AE40 sub.b r0h, r0h ROM:0000AE42 and.w #0xF, r0 ROM:0000AE46 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AE4A mov.b r0l, @(1:16,er6) ROM:0000AE4E mov.w @gCurSubstateC:16, r0 ROM:0000AE52 shlr.w r0 ROM:0000AE54 shlr.w r0 ROM:0000AE56 shlr.w r0 ROM:0000AE58 shlr.w r0 ROM:0000AE5A and.w #0xF, r0 ROM:0000AE5E mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AE62 mov.b r0l, @(2:16,er6) ROM:0000AE66 mov.w @gCurSubstateC:16, r0 ROM:0000AE6A and.w #0xF, r0 ROM:0000AE6E mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AE72 mov.b r0l, @(3:16,er6) ROM:0000AE76 mov.w r6, e0 ROM:0000AE78 mov.w #0x1820, r0 ROM:0000AE7C jsr @er5 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AE7E mov.b @curUiFlags:16, r0l ; bits: ROM:0000AE7E ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit ROM:0000AE7E ; 0x02 - slower animation frame ROM:0000AE82 extu.w r0 ROM:0000AE84 shar.w r0 ROM:0000AE86 btst #0, r0l ROM:0000AE88 bne loc_AEA8:8 ROM:0000AE8A mov.w #aV, e0 ; "V" ROM:0000AE8E mov.w #0x3806, r0 ROM:0000AE92 jsr @er5 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AE94 mov.w #aV, e0 ; "V" ROM:0000AE98 mov.w #0x382D, r0 ROM:0000AE9C jsr @er5 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AE9E mov.w #aV, e0 ; "V" ROM:0000AEA2 ROM:0000AEA2 loc_AEA2: ; CODE XREF: drawSomethingWithTinyChars+D4j ROM:0000AEA2 mov.w #0x3855, r0 ROM:0000AEA6 ROM:0000AEA6 loc_AEA6: ; CODE XREF: drawSomethingWithTinyChars+A4j ROM:0000AEA6 ; drawSomethingWithTinyChars+BEj ... ROM:0000AEA6 jsr @er5 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AEA8 ROM:0000AEA8 loc_AEA8: ; CODE XREF: drawSomethingWithTinyChars+Ej ROM:0000AEA8 ; drawSomethingWithTinyChars+20j ... ROM:0000AEA8 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:0000AEA8 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AEA8 ; ItemScreenHandler: ROM:0000AEA8 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AEA8 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AEA8 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AEA8 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AEA8 ; 0x0010 - light grey pokeball ROM:0000AEA8 ; 0x0020 - tiny map icon ROM:0000AEA8 ; 0x0040 - found item #0 (slot nonempty) ROM:0000AEA8 ; 0x0080 - found item #1 (slot nonempty) ROM:0000AEA8 ; 0x0100 - found item #2 (slot nonempty) ROM:0000AEA8 ; 0x0200 - grey item icon ROM:0000AEA8 ; ItemRXed - what was RXed ROM:0000AEA8 ; 0 - event pokemon ROM:0000AEA8 ; 1 - special route ROM:0000AEA8 ; 2 - item ROM:0000AEA8 ; 3 - special ROM:0000AEA8 ; 4 - stamp: heart ROM:0000AEA8 ; 5 - stamp: spade ROM:0000AEA8 ; 6 - stamp: diamond ROM:0000AEA8 ; 7 - stamp: club ROM:0000AEA8 ; switch: ROM:0000AEA8 ; zero - pokemon does ROM:0000AEA8 ; nonzero - item needs to be switched ROM:0000AEA8 ; item RXed: ROM:0000AEA8 ; what sort of thing was RXed: item, map, route, etc ROM:0000AEAC cmp.b #4, r0l ROM:0000AEAE bcc loc_AEB6:8 ROM:0000AEB0 inc.b r0l ROM:0000AEB2 mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000AEB2 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AEB2 ; ItemScreenHandler: ROM:0000AEB2 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AEB2 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AEB2 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AEB2 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AEB2 ; 0x0010 - light grey pokeball ROM:0000AEB2 ; 0x0020 - tiny map icon ROM:0000AEB2 ; 0x0040 - found item #0 (slot nonempty) ROM:0000AEB2 ; 0x0080 - found item #1 (slot nonempty) ROM:0000AEB2 ; 0x0100 - found item #2 (slot nonempty) ROM:0000AEB2 ; 0x0200 - grey item icon ROM:0000AEB2 ; ItemRXed - what was RXed ROM:0000AEB2 ; 0 - event pokemon ROM:0000AEB2 ; 1 - special route ROM:0000AEB2 ; 2 - item ROM:0000AEB2 ; 3 - special ROM:0000AEB2 ; 4 - stamp: heart ROM:0000AEB2 ; 5 - stamp: spade ROM:0000AEB2 ; 6 - stamp: diamond ROM:0000AEB2 ; 7 - stamp: club ROM:0000AEB2 ; switch: ROM:0000AEB2 ; zero - pokemon does ROM:0000AEB2 ; nonzero - item needs to be switched ROM:0000AEB2 ; item RXed: ROM:0000AEB2 ; what sort of thing was RXed: item, map, route, etc ROM:0000AEB6 ROM:0000AEB6 loc_AEB6: ; CODE XREF: drawSomethingWithTinyChars+1A8j ROM:0000AEB6 add.w #6, r7 ROM:0000AEBA rts ROM:0000AEBA ; End of function drawSomethingWithTinyChars ROM:0000AEBA ROM:0000AEBC ROM:0000AEBC ; =============== S U B R O U T I N E ======================================= ROM:0000AEBC ROM:0000AEBC ROM:0000AEBC sub_AEBC: ; CODE XREF: performActionAsRequestedByRemote+86p ROM:0000AEBC ; interactionHandlerDebugMode22+1A4p ROM:0000AEBC sub.b r0l, r0l ROM:0000AEBE mov.b r0l, @ACCEL_SAMPLE_NEXT_WRITE_IDX:16 ROM:0000AEC2 mov.w #0x10, e0 ROM:0000AEC6 mov.w e0, @gCurSubstateY:16 ; Substate: ROM:0000AEC6 ; gifted items view: this is item number that has focus and arrow ROM:0000AEC6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000AEC6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000AEC6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000AECA mov.b r0l, @gCurSubstateA:16 ; Substate for various modes ROM:0000AECA ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AECA ; ItemScreenHandler: ROM:0000AECA ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AECA ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AECA ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AECA ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AECA ; 0x0010 - light grey pokeball ROM:0000AECA ; 0x0020 - tiny map icon ROM:0000AECA ; 0x0040 - found item #0 (slot nonempty) ROM:0000AECA ; 0x0080 - found item #1 (slot nonempty) ROM:0000AECA ; 0x0100 - found item #2 (slot nonempty) ROM:0000AECA ; 0x0200 - grey item icon ROM:0000AECA ; ItemRXed - what was RXed ROM:0000AECA ; 0 - event pokemon ROM:0000AECA ; 1 - special route ROM:0000AECA ; 2 - item ROM:0000AECA ; 3 - special ROM:0000AECA ; 4 - stamp: heart ROM:0000AECA ; 5 - stamp: spade ROM:0000AECA ; 6 - stamp: diamond ROM:0000AECA ; 7 - stamp: club ROM:0000AECA ; switch: ROM:0000AECA ; zero - pokemon does ROM:0000AECA ; nonzero - item needs to be switched ROM:0000AECA ; item RXed: ROM:0000AECA ; what sort of thing was RXed: item, map, route, etc ROM:0000AECE mov.b r0l, @gCurSubstateA+1:16 ; Substate for various modes ROM:0000AECE ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AECE ; ItemScreenHandler: ROM:0000AECE ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AECE ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AECE ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AECE ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AECE ; 0x0010 - light grey pokeball ROM:0000AECE ; 0x0020 - tiny map icon ROM:0000AECE ; 0x0040 - found item #0 (slot nonempty) ROM:0000AECE ; 0x0080 - found item #1 (slot nonempty) ROM:0000AECE ; 0x0100 - found item #2 (slot nonempty) ROM:0000AECE ; 0x0200 - grey item icon ROM:0000AECE ; ItemRXed - what was RXed ROM:0000AECE ; 0 - event pokemon ROM:0000AECE ; 1 - special route ROM:0000AECE ; 2 - item ROM:0000AECE ; 3 - special ROM:0000AECE ; 4 - stamp: heart ROM:0000AECE ; 5 - stamp: spade ROM:0000AECE ; 6 - stamp: diamond ROM:0000AECE ; 7 - stamp: club ROM:0000AECE ; switch: ROM:0000AECE ; zero - pokemon does ROM:0000AECE ; nonzero - item needs to be switched ROM:0000AECE ; item RXed: ROM:0000AECE ; what sort of thing was RXed: item, map, route, etc ROM:0000AED2 sub.w e0, e0 ROM:0000AED4 mov.w e0, @gCurSubstateB:16 ; Substate: ROM:0000AED4 ; in gifted items view this has a bitfield of which items we have (10 bits) ROM:0000AED8 mov.w e0, @gCurSubstateC:16 ROM:0000AEDC mov.w e0, @gCurSubstateE:16 ; ubstate for various modes ROM:0000AEDC ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" ROM:0000AEE0 mov.w #8, r1 ROM:0000AEE4 mov.w #gCurSubstateF, e0 ; different per view ROM:0000AEE4 ; battle: ROM:0000AEE4 ; bitfield [3..5]: battle action animation (our action) ROM:0000AEE4 ; 0 - attacked ROM:0000AEE4 ; 1 - evaded ROM:0000AEE4 ; 2 - critical hit ROM:0000AEE4 ; bitfield [1..2]: battle action animation (their action) ROM:0000AEE4 ; 0 - attacked ROM:0000AEE4 ; 1 - evaded ROM:0000AEE4 ; 2 - critical hit ROM:0000AEE8 mov.w r1, r0 ROM:0000AEEA jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000AEEE mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:0000AEEE ; 0x04 - have walking poke ROM:0000AEF2 bset #1, @er0 ROM:0000AEF6 rts ROM:0000AEF6 ; End of function sub_AEBC ROM:0000AEF6 ROM:0000AEF8 ROM:0000AEF8 ; =============== S U B R O U T I N E ======================================= ROM:0000AEF8 ROM:0000AEF8 ROM:0000AEF8 interactionHandlerDebugMode23: ; CODE XREF: interactionHandler:case_0x17p ROM:0000AEF8 rts ROM:0000AEF8 ; End of function interactionHandlerDebugMode23 ROM:0000AEF8 ROM:0000AEFA ROM:0000AEFA ; =============== S U B R O U T I N E ======================================= ROM:0000AEFA ROM:0000AEFA ROM:0000AEFA drawSomethingWithTinyChars2: ; CODE XREF: maybe_viewDoDisplay:case__0x17p ROM:0000AEFA sub.w #6, r7 ROM:0000AEFE mov.w #drawTinyChars, r4 ; (r0l = x, r0h = y, e0 = char*) ROM:0000AF02 mov.b #0x3C, r0l ; '<' ROM:0000AF04 mov.b r0l, @byte_FFF7AF:16 ROM:0000AF08 mov.b #0x1E, r0l ROM:0000AF0A mov.b r0l, @byte_FFF7B0:16 ROM:0000AF0E mov.w r7, r6 ROM:0000AF10 mov.b @gCurSubstateA:16, r0l ; Substate for various modes ROM:0000AF10 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000AF10 ; ItemScreenHandler: ROM:0000AF10 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000AF10 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000AF10 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000AF10 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000AF10 ; 0x0010 - light grey pokeball ROM:0000AF10 ; 0x0020 - tiny map icon ROM:0000AF10 ; 0x0040 - found item #0 (slot nonempty) ROM:0000AF10 ; 0x0080 - found item #1 (slot nonempty) ROM:0000AF10 ; 0x0100 - found item #2 (slot nonempty) ROM:0000AF10 ; 0x0200 - grey item icon ROM:0000AF10 ; ItemRXed - what was RXed ROM:0000AF10 ; 0 - event pokemon ROM:0000AF10 ; 1 - special route ROM:0000AF10 ; 2 - item ROM:0000AF10 ; 3 - special ROM:0000AF10 ; 4 - stamp: heart ROM:0000AF10 ; 5 - stamp: spade ROM:0000AF10 ; 6 - stamp: diamond ROM:0000AF10 ; 7 - stamp: club ROM:0000AF10 ; switch: ROM:0000AF10 ; zero - pokemon does ROM:0000AF10 ; nonzero - item needs to be switched ROM:0000AF10 ; item RXed: ROM:0000AF10 ; what sort of thing was RXed: item, map, route, etc ROM:0000AF14 add.b #0x30, r0l ; '0' ROM:0000AF16 mov.b r0l, @er6 ROM:0000AF18 mov.w r6, r5 ROM:0000AF1A inc.w #1, r5 ROM:0000AF1C sub.b r0l, r0l ROM:0000AF1E mov.b r0l, @er5 ROM:0000AF20 mov.b r0l, r0h ROM:0000AF22 mov.w r6, e0 ROM:0000AF24 mov.b #0x4C, r0l ; 'L' ROM:0000AF26 jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AF28 mov.b @gCurSubstateF:16, r0l ; different per view ROM:0000AF28 ; battle: ROM:0000AF28 ; bitfield [3..5]: battle action animation (our action) ROM:0000AF28 ; 0 - attacked ROM:0000AF28 ; 1 - evaded ROM:0000AF28 ; 2 - critical hit ROM:0000AF28 ; bitfield [1..2]: battle action animation (their action) ROM:0000AF28 ; 0 - attacked ROM:0000AF28 ; 1 - evaded ROM:0000AF28 ; 2 - critical hit ROM:0000AF2C add.b #0x30, r0l ; '0' ROM:0000AF2E mov.b r0l, @er6 ROM:0000AF30 sub.b r0l, r0l ROM:0000AF32 mov.b r0l, @er5 ROM:0000AF34 mov.b r0l, r0h ROM:0000AF36 mov.w r6, e0 ROM:0000AF38 mov.b #0x54, r0l ; 'T' ROM:0000AF3A jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AF3C mov.w @word_FFF7DA:16, r0 ROM:0000AF40 mov.w #0x1000, r1 ROM:0000AF44 extu.l er0 ROM:0000AF46 divxu.w r1, er0 ROM:0000AF48 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AF4C mov.b r0l, @er6 ROM:0000AF4E mov.b @word_FFF7DA:16, r0l ROM:0000AF52 sub.b r0h, r0h ROM:0000AF54 and.w #0xF, r0 ROM:0000AF58 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AF5C mov.b r0l, @er5 ROM:0000AF5E mov.w r6, r0 ROM:0000AF60 inc.w #2, r0 ROM:0000AF62 mov.w r0, e6 ROM:0000AF64 mov.w @word_FFF7DA:16, e0 ROM:0000AF68 shlr.w e0 ROM:0000AF6A shlr.w e0 ROM:0000AF6C shlr.w e0 ROM:0000AF6E shlr.w e0 ROM:0000AF70 and.w #0xF, e0 ROM:0000AF74 mov.w e0, r1 ROM:0000AF76 mov.b @(str_0123456789abcdef,er1), r1l ; "0123456789ABCDEF" ROM:0000AF7A mov.b r1l, @er0 ROM:0000AF7C mov.w r6, r3 ROM:0000AF7E add.w #3, r3 ROM:0000AF82 mov.w @word_FFF7DA:16, e0 ROM:0000AF86 and.w #0xF, e0 ROM:0000AF8A mov.w e0, r1 ROM:0000AF8C mov.b @(str_0123456789abcdef,er1), r1l ; "0123456789ABCDEF" ROM:0000AF90 mov.b r1l, @er3 ROM:0000AF92 sub.b r1l, r1l ROM:0000AF94 mov.b r1l, @(4:16,er6) ROM:0000AF98 mov.w r6, e0 ROM:0000AF9A mov.w #0x820, r0 ROM:0000AF9E jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AFA0 mov.w @word_FFF7DC:16, r0 ROM:0000AFA4 mov.w #0x1000, r1 ROM:0000AFA8 extu.l er0 ROM:0000AFAA divxu.w r1, er0 ROM:0000AFAC mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AFB0 mov.b r0l, @er6 ROM:0000AFB2 mov.b @word_FFF7DC:16, r0l ROM:0000AFB6 sub.b r0h, r0h ROM:0000AFB8 and.w #0xF, r0 ROM:0000AFBC mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AFC0 mov.b r0l, @er5 ROM:0000AFC2 mov.w @word_FFF7DC:16, r0 ROM:0000AFC6 shlr.w r0 ROM:0000AFC8 shlr.w r0 ROM:0000AFCA shlr.w r0 ROM:0000AFCC shlr.w r0 ROM:0000AFCE and.w #0xF, r0 ROM:0000AFD2 mov.w e6, r1 ROM:0000AFD4 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AFD8 mov.b r0l, @er1 ROM:0000AFDA mov.w @word_FFF7DC:16, r0 ROM:0000AFDE and.w #0xF, r0 ROM:0000AFE2 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000AFE6 mov.b r0l, @er3 ROM:0000AFE8 mov.w r6, e0 ROM:0000AFEA mov.w #0x840, r0 ROM:0000AFEE jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000AFF0 mov.w @word_FFF7DE:16, r0 ROM:0000AFF4 mov.w #0x1000, r1 ROM:0000AFF8 extu.l er0 ROM:0000AFFA divxu.w r1, er0 ROM:0000AFFC mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000B000 mov.b r0l, @er6 ROM:0000B002 mov.b @word_FFF7DE:16, r0l ROM:0000B006 sub.b r0h, r0h ROM:0000B008 and.w #0xF, r0 ROM:0000B00C mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000B010 mov.b r0l, @er5 ROM:0000B012 mov.w @word_FFF7DE:16, r0 ROM:0000B016 shlr.w r0 ROM:0000B018 shlr.w r0 ROM:0000B01A shlr.w r0 ROM:0000B01C shlr.w r0 ROM:0000B01E and.w #0xF, r0 ROM:0000B022 mov.w e6, r1 ROM:0000B024 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000B028 mov.b r0l, @er1 ROM:0000B02A mov.w @word_FFF7DE:16, r0 ROM:0000B02E and.w #0xF, r0 ROM:0000B032 mov.b @(str_0123456789abcdef,er0), r0l ; "0123456789ABCDEF" ROM:0000B036 mov.b r0l, @er3 ROM:0000B038 mov.w r6, e0 ROM:0000B03A mov.w #0x1020, r0 ROM:0000B03E jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000B040 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000B040 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000B040 ; ItemScreenHandler: ROM:0000B040 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000B040 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000B040 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000B040 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000B040 ; 0x0010 - light grey pokeball ROM:0000B040 ; 0x0020 - tiny map icon ROM:0000B040 ; 0x0040 - found item #0 (slot nonempty) ROM:0000B040 ; 0x0080 - found item #1 (slot nonempty) ROM:0000B040 ; 0x0100 - found item #2 (slot nonempty) ROM:0000B040 ; 0x0200 - grey item icon ROM:0000B040 ; ItemRXed - what was RXed ROM:0000B040 ; 0 - event pokemon ROM:0000B040 ; 1 - special route ROM:0000B040 ; 2 - item ROM:0000B040 ; 3 - special ROM:0000B040 ; 4 - stamp: heart ROM:0000B040 ; 5 - stamp: spade ROM:0000B040 ; 6 - stamp: diamond ROM:0000B040 ; 7 - stamp: club ROM:0000B040 ; switch: ROM:0000B040 ; zero - pokemon does ROM:0000B040 ; nonzero - item needs to be switched ROM:0000B040 ; item RXed: ROM:0000B040 ; what sort of thing was RXed: item, map, route, etc ROM:0000B044 add.b #0x30, r0l ; '0' ROM:0000B046 mov.b r0l, @er6 ROM:0000B048 sub.b r0l, r0l ROM:0000B04A mov.b r0l, @er5 ROM:0000B04C mov.w r6, e0 ROM:0000B04E mov.w #0x104C, r0 ROM:0000B052 jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000B054 mov.b @gCurSubstateF+1:16, r0l ; different per view ROM:0000B054 ; battle: ROM:0000B054 ; bitfield [3..5]: battle action animation (our action) ROM:0000B054 ; 0 - attacked ROM:0000B054 ; 1 - evaded ROM:0000B054 ; 2 - critical hit ROM:0000B054 ; bitfield [1..2]: battle action animation (their action) ROM:0000B054 ; 0 - attacked ROM:0000B054 ; 1 - evaded ROM:0000B054 ; 2 - critical hit ROM:0000B058 add.b #0x30, r0l ; '0' ROM:0000B05A mov.b r0l, @er6 ROM:0000B05C mov.w r6, e0 ROM:0000B05E mov.w #0x1054, r0 ROM:0000B062 jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000B064 mov.b @gCurSubstateA+1:16, r0l ; Substate for various modes ROM:0000B064 ; POKeRADAR: currently pointed-to bush (arrow location) ROM:0000B064 ; ItemScreenHandler: ROM:0000B064 ; 0x0001 - have walking pokemon (are we on a stroll) ROM:0000B064 ; 0x0002 - caught pokemon #0 (slot nonempty) ROM:0000B064 ; 0x0004 - caught pokemon #1 (slot nonempty) ROM:0000B064 ; 0x0008 - caught pokemon #2 (slot nonempty) ROM:0000B064 ; 0x0010 - light grey pokeball ROM:0000B064 ; 0x0020 - tiny map icon ROM:0000B064 ; 0x0040 - found item #0 (slot nonempty) ROM:0000B064 ; 0x0080 - found item #1 (slot nonempty) ROM:0000B064 ; 0x0100 - found item #2 (slot nonempty) ROM:0000B064 ; 0x0200 - grey item icon ROM:0000B064 ; ItemRXed - what was RXed ROM:0000B064 ; 0 - event pokemon ROM:0000B064 ; 1 - special route ROM:0000B064 ; 2 - item ROM:0000B064 ; 3 - special ROM:0000B064 ; 4 - stamp: heart ROM:0000B064 ; 5 - stamp: spade ROM:0000B064 ; 6 - stamp: diamond ROM:0000B064 ; 7 - stamp: club ROM:0000B064 ; switch: ROM:0000B064 ; zero - pokemon does ROM:0000B064 ; nonzero - item needs to be switched ROM:0000B064 ; item RXed: ROM:0000B064 ; what sort of thing was RXed: item, map, route, etc ROM:0000B068 mov.b @gCurSubstateF+1:16, r0h ; different per view ROM:0000B068 ; battle: ROM:0000B068 ; bitfield [3..5]: battle action animation (our action) ROM:0000B068 ; 0 - attacked ROM:0000B068 ; 1 - evaded ROM:0000B068 ; 2 - critical hit ROM:0000B068 ; bitfield [1..2]: battle action animation (their action) ROM:0000B068 ; 0 - attacked ROM:0000B068 ; 1 - evaded ROM:0000B068 ; 2 - critical hit ROM:0000B06C cmp.b r0h, r0l ROM:0000B06E bne loc_B09C:8 ROM:0000B070 bclr #0, @IO_PDR1:8 ROM:0000B074 bclr #1, @IO_PDR1:8 ROM:0000B078 ROM:0000B078 loc_B078: ; CODE XREF: drawSomethingWithTinyChars2+184j ROM:0000B078 mov.b @SSU_SSSR:16, r0l ROM:0000B07C bld #2, r0l ROM:0000B07E bcc loc_B078:8 ROM:0000B080 mov.b #0xA7, r0l ; 'º' ROM:0000B082 mov.b r0l, @SSU_SSTDR:16 ROM:0000B086 ROM:0000B086 loc_B086: ; CODE XREF: drawSomethingWithTinyChars2+192j ROM:0000B086 mov.b @SSU_SSSR:16, r0l ROM:0000B08A bld #3, r0l ROM:0000B08C bcc loc_B086:8 ROM:0000B08E bset #0, @IO_PDR1:8 ROM:0000B092 mov.w #aOk, e0 ; "OK" ROM:0000B096 mov.w #0x2008, r0 ROM:0000B09A jsr @er4 ; drawTinyChars(r0l = x, r0h = y, e0 = char*) ROM:0000B09C ROM:0000B09C loc_B09C: ; CODE XREF: drawSomethingWithTinyChars2+174j ROM:0000B09C add.w #6, r7 ROM:0000B0A0 rts ROM:0000B0A0 ; End of function drawSomethingWithTinyChars2 ROM:0000B0A0 ROM:0000B0A2 ROM:0000B0A2 ; =============== S U B R O U T I N E ======================================= ROM:0000B0A2 ROM:0000B0A2 ROM:0000B0A2 drawNG6inTinyChars: ; CODE XREF: maybe_viewDoDisplay:case__0x18p ROM:0000B0A2 mov.w #aNg6, e0 ; "NG6" ROM:0000B0A6 mov.w #0x808, r0 ROM:0000B0AA jmp drawTinyChars:24 ; (r0l = x, r0h = y, e0 = char*) ROM:0000B0AA ; End of function drawNG6inTinyChars ROM:0000B0AA ROM:0000B0AE ROM:0000B0AE ; =============== S U B R O U T I N E ======================================= ROM:0000B0AE ROM:0000B0AE ROM:0000B0AE writeNintendoStringToFlash: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+6Cp ROM:0000B0AE sub.b r6l, r6l ROM:0000B0B0 ROM:0000B0B0 loc_B0B0: ; CODE XREF: writeNintendoStringToFlash+16j ROM:0000B0B0 extu.w r6 ROM:0000B0B2 mov.w r6, e6 ROM:0000B0B4 mov.w e6, r1 ROM:0000B0B6 mov.b @(DATA_FOR_EEPROM_0x0000,er1), r1l ; 0xBF98 ROM:0000B0BA mov.w e6, r0 ROM:0000B0BC jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:0000B0C0 inc.b r6l ROM:0000B0C2 cmp.b #8, r6l ROM:0000B0C4 bcs loc_B0B0:8 ROM:0000B0C6 rts ROM:0000B0C6 ; End of function writeNintendoStringToFlash ROM:0000B0C6 ROM:0000B0C8 ROM:0000B0C8 ; =============== S U B R O U T I N E ======================================= ROM:0000B0C8 ROM:0000B0C8 ; () -> bool found ROM:0000B0C8 ROM:0000B0C8 checkForNintendoStringInFlash: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+Ep ROM:0000B0C8 sub.b r6l, r6l ROM:0000B0CA bra loc_B0EA:8 ROM:0000B0CC ; --------------------------------------------------------------------------- ROM:0000B0CC ROM:0000B0CC loc_B0CC: ; CODE XREF: checkForNintendoStringInFlash+24j ROM:0000B0CC extu.w r6 ROM:0000B0CE mov.w r6, e6 ROM:0000B0D0 mov.w e6, r0 ROM:0000B0D2 jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:0000B0D6 extu.w r0 ROM:0000B0D8 mov.w e6, r1 ROM:0000B0DA mov.b @(DATA_FOR_EEPROM_0x0000,er1), r1l ; "nintendo" ROM:0000B0DE exts.w r1 ROM:0000B0E0 cmp.w r1, r0 ROM:0000B0E2 beq loc_B0E8:8 ROM:0000B0E4 sub.b r0l, r0l ROM:0000B0E6 bra locret_B0F0:8 ROM:0000B0E8 ; --------------------------------------------------------------------------- ROM:0000B0E8 ROM:0000B0E8 loc_B0E8: ; CODE XREF: checkForNintendoStringInFlash+1Aj ROM:0000B0E8 inc.b r6l ROM:0000B0EA ROM:0000B0EA loc_B0EA: ; CODE XREF: checkForNintendoStringInFlash+2j ROM:0000B0EA cmp.b #8, r6l ROM:0000B0EC bcs loc_B0CC:8 ROM:0000B0EE mov.b #1, r0l ROM:0000B0F0 ROM:0000B0F0 locret_B0F0: ; CODE XREF: checkForNintendoStringInFlash+1Ej ROM:0000B0F0 rts ROM:0000B0F0 ; End of function checkForNintendoStringInFlash ROM:0000B0F0 ROM:0000B0F2 ROM:0000B0F2 ; =============== S U B R O U T I N E ======================================= ROM:0000B0F2 ROM:0000B0F2 ROM:0000B0F2 basicIoConfig: ; CODE XREF: ENTRY+Ap ROM:0000B0F2 bset #4, @CKSTPR2:8 ; enable SSU ROM:0000B0F6 mov.w #SSU_SSCRL, r0 ROM:0000B0FA bset #6, @er0 ; record that it is on ROM:0000B0FE mov.b #0x86, r0l ; 'å' ; msb first, clock is clk / 4 ROM:0000B100 mov.b r0l, @SSU_SSMR:16 ROM:0000B104 mov.b #0x8C, r0l ; 'î' ; master, misc cfg ROM:0000B106 mov.b r0l, @SSU_SSCRH:16 ROM:0000B10A mov.b #8, r0l ; pull up port 9 pin 3 ROM:0000B10C mov.b r0l, @IO_PUCR9:16 ROM:0000B110 mov.b #1, r0l ; port 9 pin 0 is output, others inputs ROM:0000B112 mov.b r0l, @IO_PCR9:8 ROM:0000B114 mov.b #7, r0h ; port 1 pins 0..2 are outputs ROM:0000B116 mov.b r0h, @IO_PCR1:8 ROM:0000B118 mov.b #5, r0h ; port 1 pins 0 and 2 are high ROM:0000B11A mov.b r0h, @IO_PDR1:8 ROM:0000B11C bset #0, @IO_PDR9:8 ; port 9 pin 0 is high ROM:0000B120 mov.b r0l, @IO_PMRB:8 ; PB0 is nIRQ0 ROM:0000B122 rts ROM:0000B122 ; End of function basicIoConfig ROM:0000B122 ROM:0000B124 ROM:0000B124 ; =============== S U B R O U T I N E ======================================= ROM:0000B124 ROM:0000B124 ROM:0000B124 wipeOutStepsAndsyncTime: ; CODE XREF: some_sort_of_eeprom_init+F2p ROM:0000B124 mov.b r0l, r0l ROM:0000B126 beq loc_B146:8 ROM:0000B128 sub.l er0, er0 ROM:0000B12A mov.l er0, @RamCache_totalSteps:16 ROM:0000B130 mov.w r0, @RamCache_totalDays:16 ROM:0000B134 mov.l #220924800, er1 ROM:0000B13A mov.l er1, @RamCache_lastSyncTime:16 ROM:0000B140 mov.l er0, @RamCache_STEP_COUNT_maybe:16 ROM:0000B146 ROM:0000B146 loc_B146: ; CODE XREF: wipeOutStepsAndsyncTime+2j ROM:0000B146 sub.w r0, r0 ROM:0000B148 mov.w r0, @word_FFF790:16 ROM:0000B14C mov.w r0, @RamCache_curWatts:16 ROM:0000B150 mov.b r0l, @stepToWattDividerState:16 ; counts to 20, when reached, watt increments, this resets ROM:0000B154 mov.b @RamCache_settingsByte:16, r1l ROM:0000B158 and.b #0xA4, r1l ROM:0000B15A or.b #0x24, r1l ROM:0000B15C mov.b r1l, @RamCache_settingsByte:16 ROM:0000B160 mov.b r0l, @likelyCurEventLogPointer:16 ROM:0000B164 mov.w #0x18, e1 ROM:0000B168 mov.w #RamCache_totalSteps, r1 ROM:0000B16C mov.l #0x2560156, er0 ROM:0000B172 jmp writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000B172 ; End of function wipeOutStepsAndsyncTime ; ROM:0000B172 ; see docs for readRedundantDataFromEeprom for format info ROM:0000B176 ROM:0000B176 ; =============== S U B R O U T I N E ======================================= ROM:0000B176 ROM:0000B176 ROM:0000B176 updateCachedWalkerStatusByteFromEeprom: ; CODE XREF: checkForAndInitEepromContentsIfNeeded:loc_B320p ROM:0000B176 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000B17A mov.w #0x68, r0 ; 'h' ROM:0000B17E jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000B182 mov.w r0, r6 ROM:0000B184 mov.w r0, r1 ROM:0000B186 mov.w #0x68, e1 ; 'h' ROM:0000B18A mov.l #0x1ED00ED, er0 ROM:0000B190 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000B190 ; ROM:0000B190 ; data is stored in two provided locations and read to RAM ROM:0000B190 ; each location includes a checksum right after the data (not inluded in length) ROM:0000B190 ; ROM:0000B190 ; if only one location has checksum-valid data, other is replaced with it ROM:0000B190 ; ROM:0000B190 ; if both appear valid, #0 is assumed dominant ROM:0000B190 ; ROM:0000B190 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000B194 mov.w #walker_status_flags, r0 ; 0x02 - walker inited ROM:0000B194 ; 0x04 - have walking poke ROM:0000B198 mov.b @(0x5B:16,er6), r1l ROM:0000B19C bld #0, r1l ROM:0000B19E bst #1, @er0 ; is inited ROM:0000B1A2 mov.b @(0x5B:16,er6), r6l ROM:0000B1A6 bld #1, r6l ROM:0000B1A8 bst #2, @er0 ; is on special route ROM:0000B1AC rts ROM:0000B1AC ; End of function updateCachedWalkerStatusByteFromEeprom ROM:0000B1AC ROM:0000B1AE ROM:0000B1AE ; =============== S U B R O U T I N E ======================================= ROM:0000B1AE ROM:0000B1AE ; (bool r0l = wipeOutEventBitfield, bool r0h = wipeOutStepsAtLastSync) ROM:0000B1AE ROM:0000B1AE some_sort_of_eeprom_init: ; CODE XREF: performActionAsRequestedByRemote:loc_152p ROM:0000B1AE ; factoryTestPerformIfNeeded+154p ... ROM:0000B1AE push.w r3 ROM:0000B1B0 push.w r4 ROM:0000B1B2 push.l er5 ROM:0000B1B6 push.w r6 ROM:0000B1B8 sub.l er5, er5 ROM:0000B1BA mov.b r0l, r4h ROM:0000B1BC mov.b r0h, r4l ROM:0000B1BE mov.l er5, @stepCountTodaySoFar:16 ROM:0000B1C4 sub.w e0, e0 ROM:0000B1C6 mov.w e0, @someWalkingRelatedState:16 ; clamped to 9999 (what is this?) ROM:0000B1CA mov.w #walker_status_flags, r1 ; 0x02 - walker inited ROM:0000B1CA ; 0x04 - have walking poke ROM:0000B1CE bclr #1, @er1 ROM:0000B1D2 bclr #2, @er1 ROM:0000B1D6 jsr get_packet_data_pointer:24 ROM:0000B1DA mov.w r0, r6 ROM:0000B1DC mov.w r0, r1 ; store the read in th epacket data pointer ROM:0000B1DE mov.w #0x68, e1 ; 'h' ROM:0000B1E2 mov.l #0x1ED00ED, er0 ; data quantum of 0x68 bytes, at 0x00ED and redundant copy at 0x01ED ROM:0000B1E8 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000B1E8 ; ROM:0000B1E8 ; data is stored in two provided locations and read to RAM ROM:0000B1E8 ; each location includes a checksum right after the data (not inluded in length) ROM:0000B1E8 ; ROM:0000B1E8 ; if only one location has checksum-valid data, other is replaced with it ROM:0000B1E8 ; ROM:0000B1E8 ; if both appear valid, #0 is assumed dominant ROM:0000B1E8 ; ROM:0000B1E8 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000B1EC mov.l er5, @er6 ROM:0000B1F0 mov.l er5, @(4:16,er6) ROM:0000B1F6 sub.w r0, r0 ROM:0000B1F8 mov.w r0, @(8:16,er6) ROM:0000B1FC mov.w r0, @(0xA:16,er6) ROM:0000B200 mov.l er5, @(0xC:16,er6) ROM:0000B206 mov.w r0, e0 ROM:0000B208 sub.b r1l, r1l ROM:0000B20A ROM:0000B20A loc_B20A: ; CODE XREF: some_sort_of_eeprom_init+6Cj ROM:0000B20A mov.w #0x48, r0 ; 'H' ROM:0000B20E add.w r6, r0 ROM:0000B210 add.w e0, r0 ROM:0000B212 mov.b r1l, @er0 ROM:0000B214 inc.w #1, e0 ROM:0000B216 cmp.w #0x12, e0 ROM:0000B21A bcs loc_B20A:8 ROM:0000B21C mov.b r4h, r4h ROM:0000B21E beq loc_B234:8 ROM:0000B220 sub.w e0, e0 ROM:0000B222 ROM:0000B222 loc_B222: ; CODE XREF: some_sort_of_eeprom_init+84j ROM:0000B222 mov.w #0x38, r0 ; '8' ROM:0000B226 add.w r6, r0 ROM:0000B228 add.w e0, r0 ROM:0000B22A mov.b r1l, @er0 ROM:0000B22C inc.w #1, e0 ROM:0000B22E cmp.w #0x10, e0 ROM:0000B232 bcs loc_B222:8 ROM:0000B234 ROM:0000B234 loc_B234: ; CODE XREF: some_sort_of_eeprom_init+70j ROM:0000B234 mov.w #0x5B, r0 ; '[' ROM:0000B238 add.w r6, r0 ROM:0000B23A bclr #0, @er0 ROM:0000B23E mov.w #0x5B, r0 ; '[' ROM:0000B242 add.w r6, r0 ROM:0000B244 bclr #1, @er0 ROM:0000B248 mov.w #0x5B, r0 ; '[' ROM:0000B24C add.w r6, r0 ROM:0000B24E bclr #2, @er0 ROM:0000B252 mov.b @(0x5B:16,er6), r0l ROM:0000B256 and.b #7, r0l ROM:0000B258 mov.b r0l, @(0x5B:16,er6) ROM:0000B25C sub.b r0l, r0l ROM:0000B25E mov.b r0l, @(0x5A:16,er6) ROM:0000B262 mov.b r0l, @(0x5E:16,er6) ROM:0000B266 mov.b #2, r0h ROM:0000B268 mov.b r0h, @(0x5F:16,er6) ROM:0000B26C mov.l er5, @(0x60:16,er6) ROM:0000B272 mov.l #0x280010, er1 ROM:0000B278 add.w r6, r1 ; write to r6 + 0x10 ROM:0000B27A mov.l #0x1830083, er0 ; data quantum of 0x28 bytes, at 0x0083 and redundant copy at 0x0183 ROM:0000B280 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000B280 ; ROM:0000B280 ; data is stored in two provided locations and read to RAM ROM:0000B280 ; each location includes a checksum right after the data (not inluded in length) ROM:0000B280 ; ROM:0000B280 ; if only one location has checksum-valid data, other is replaced with it ROM:0000B280 ; ROM:0000B280 ; if both appear valid, #0 is assumed dominant ROM:0000B280 ; ROM:0000B280 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000B284 mov.b r4l, r4l ROM:0000B286 beq loc_B28E:8 ROM:0000B288 mov.l er5, @(0x64:16,er6) ROM:0000B28E ROM:0000B28E loc_B28E: ; CODE XREF: some_sort_of_eeprom_init+D8j ROM:0000B28E mov.w r6, r1 ROM:0000B290 mov.w #0x68, e1 ; 'h' ROM:0000B294 mov.l #0x1ED00ED, er0 ROM:0000B29A jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000B29A ; ROM:0000B29A ; see docs for readRedundantDataFromEeprom for format info ROM:0000B29E mov.b r4l, r0l ROM:0000B2A0 jsr wipeOutStepsAndsyncTime:24 ROM:0000B2A4 mov.b r4l, r4l ROM:0000B2A6 beq loc_B2B6:8 ROM:0000B2A8 sub.b r1l, r1l ROM:0000B2AA mov.l #0xD4CCE80, er0 ROM:0000B2B0 jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:0000B2B4 bra loc_B2C2:8 ROM:0000B2B6 ; --------------------------------------------------------------------------- ROM:0000B2B6 ROM:0000B2B6 loc_B2B6: ; CODE XREF: some_sort_of_eeprom_init+F8j ROM:0000B2B6 jsr eraseCaughtPokemonanddowsedAndGiftedItems:24 ROM:0000B2BA jsr fill_some_eeprom_structs:24 ROM:0000B2BE jsr fill_eeprom_0xCEF0_to_CF0B_with_zero:24 ROM:0000B2C2 ROM:0000B2C2 loc_B2C2: ; CODE XREF: some_sort_of_eeprom_init+106j ROM:0000B2C2 mov.b r4h, r4h ROM:0000B2C4 beq loc_B2D2:8 ROM:0000B2C6 sub.b r1l, r1l ROM:0000B2C8 mov.l #0x6C8B800, er0 ROM:0000B2CE jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:0000B2D2 ROM:0000B2D2 loc_B2D2: ; CODE XREF: some_sort_of_eeprom_init+116j ROM:0000B2D2 sub.b r1l, r1l ROM:0000B2D4 mov.l #0x1568DE24, er0 ROM:0000B2DA jsr eepromFillWithByte:24 ; (r0 = eepromAddr, e0 = numBytes, r1l = byte) ROM:0000B2DE jmp enother_common_epilogue:24 ROM:0000B2DE ; End of function some_sort_of_eeprom_init ROM:0000B2DE ROM:0000B2E2 ROM:0000B2E2 ; =============== S U B R O U T I N E ======================================= ROM:0000B2E2 ROM:0000B2E2 ROM:0000B2E2 checkForAndInitEepromContentsIfNeeded: ; CODE XREF: ENTRY+7Ap ROM:0000B2E2 push.l er4 ROM:0000B2E6 push.l er5 ROM:0000B2EA push.l er6 ROM:0000B2EE subs #2, sp ROM:0000B2F0 jsr checkForNintendoStringInFlash:24 ; () -> bool found ROM:0000B2F4 mov.b r0l, r0l ROM:0000B2F6 beq eeprom_validity_marker_not_found:8 ROM:0000B2F8 ROM:0000B2F8 eeprom_valid: ROM:0000B2F8 mov.w #0x18, e1 ROM:0000B2FC mov.w #RamCache_totalSteps, r1 ROM:0000B300 mov.l #0x2560156, er0 ROM:0000B306 jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000B306 ; ROM:0000B306 ; data is stored in two provided locations and read to RAM ROM:0000B306 ; each location includes a checksum right after the data (not inluded in length) ROM:0000B306 ; ROM:0000B306 ; if only one location has checksum-valid data, other is replaced with it ROM:0000B306 ; ROM:0000B306 ; if both appear valid, #0 is assumed dominant ROM:0000B306 ; ROM:0000B306 ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000B30A mov.b @RamCache_settingsByte:16, r0l ROM:0000B30E and.b #0x78, r0l ROM:0000B310 cmp.b #0x48, r0l ; 'H' ROM:0000B312 bls loc_B320:8 ROM:0000B314 mov.b @RamCache_settingsByte:16, r0l ROM:0000B318 and.b #0x87, r0l ROM:0000B31A or.b #0x20, r0l ROM:0000B31C mov.b r0l, @RamCache_settingsByte:16 ROM:0000B320 ROM:0000B320 loc_B320: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+30j ROM:0000B320 jsr updateCachedWalkerStatusByteFromEeprom:24 ROM:0000B324 bra loc_B352:8 ROM:0000B326 ; --------------------------------------------------------------------------- ROM:0000B326 ROM:0000B326 eeprom_validity_marker_not_found: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+14j ROM:0000B326 mov.b #1, r0h ROM:0000B328 mov.b r0h, r0l ROM:0000B32A jsr some_sort_of_eeprom_init:24 ; (bool r0l = wipeOutEventBitfield, bool r0h = wipeOutStepsAtLastSync) ROM:0000B32E mov.b @RamCache_settingsByte:16, r0h ROM:0000B332 shlr.b r0h ROM:0000B334 and.b #3, r0h ROM:0000B336 mov.b r0h, r0l ROM:0000B338 jsr likelysetVolume:24 ROM:0000B33C mov.b @RamCache_settingsByte:16, r0h ROM:0000B340 shlr.b r0h ROM:0000B342 shlr.b r0h ROM:0000B344 shlr.b r0h ROM:0000B346 and.b #0xF, r0h ROM:0000B348 mov.b r0h, r0l ROM:0000B34A jsr lcdSetContrast:24 ; (u8 contrast) //incremented y base_contrast_value ROM:0000B34E jsr writeNintendoStringToFlash:24 ROM:0000B352 ROM:0000B352 loc_B352: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+42j ROM:0000B352 mov.w r7, r1 ROM:0000B354 mov.w #1, e1 ROM:0000B358 mov.l #0x26F016F, er0 ROM:0000B35E jsr readReliableDataFromEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) -> r0l checksum ROM:0000B35E ; ROM:0000B35E ; data is stored in two provided locations and read to RAM ROM:0000B35E ; each location includes a checksum right after the data (not inluded in length) ROM:0000B35E ; ROM:0000B35E ; if only one location has checksum-valid data, other is replaced with it ROM:0000B35E ; ROM:0000B35E ; if both appear valid, #0 is assumed dominant ROM:0000B35E ; ROM:0000B35E ; if neither appears vlid, they are overwritten with 0xff, and so is the ram buffer,. returned checksum is also set to 0xFF ROM:0000B362 mov.b @sp, r0l ROM:0000B364 cmp.b #0xA5, r0l ; 'Ñ' ROM:0000B366 bne loc_B380:8 ROM:0000B368 jsr copyTeamAndconfigDataFromStagingArea:24 ROM:0000B36C sub.b r0l, r0l ROM:0000B36E mov.b r0l, @sp ROM:0000B370 mov.w r7, r1 ROM:0000B372 mov.w #1, e1 ROM:0000B376 mov.l #0x26F016F, er0 ROM:0000B37C jsr writeReliableDataToEeprom:24 ; (r0 = eepromAddr0, e0 = eepromAddr1, r1 = ramAddr, e1 = nBytes) ROM:0000B37C ; ROM:0000B37C ; see docs for readRedundantDataFromEeprom for format info ROM:0000B380 ROM:0000B380 loc_B380: ; CODE XREF: checkForAndInitEepromContentsIfNeeded+84j ROM:0000B380 adds #2, sp ROM:0000B382 pop.l er6 ROM:0000B386 pop.l er5 ROM:0000B38A pop.l er4 ROM:0000B38E rts ROM:0000B38E ; End of function checkForAndInitEepromContentsIfNeeded ROM:0000B38E ROM:0000B390 ROM:0000B390 ; =============== S U B R O U T I N E ======================================= ROM:0000B390 ROM:0000B390 ROM:0000B390 delaySomewhatAndThenSetTheRtc: ; CODE XREF: ENTRY+AAp ROM:0000B390 push.l er2 ROM:0000B394 push.w r3 ROM:0000B396 push.l er4 ROM:0000B39A push.l er5 ROM:0000B39E push.l er6 ROM:0000B3A2 mov.w #15000, r6 ROM:0000B3A6 ROM:0000B3A6 loc_B3A6: ; CODE XREF: delaySomewhatAndThenSetTheRtc+20j ROM:0000B3A6 jsr wdt_maybe_pet:24 ROM:0000B3AA jsr check_some_rtc_set_bit_and_maybe_wait:24 ROM:0000B3AE dec.w #1, r6 ROM:0000B3B0 bne loc_B3A6:8 ROM:0000B3B2 mov.l @RamCache_lastSyncTime:16, er0 ROM:0000B3B8 jsr rtcSet:24 ; (er0 = timeInSeconds) ROM:0000B3BC jmp common_epilogue_also:24 ROM:0000B3BC ; End of function delaySomewhatAndThenSetTheRtc ROM:0000B3BC ROM:0000B3C0 ROM:0000B3C0 ; =============== S U B R O U T I N E ======================================= ROM:0000B3C0 ROM:0000B3C0 ROM:0000B3C0 goToTrainerCardMicroApp: ; CODE XREF: interactionHAndlerMainMenu+10Ep ROM:0000B3C0 sub.b r0l, r0l ROM:0000B3C2 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000B3C2 ; battle: ROM:0000B3C2 ; 0 - battle opening animation ROM:0000B3C2 ; 1 - "XYZ appeared" message ROM:0000B3C2 ; 2 - "attack evade catch" directions shown ROM:0000B3C2 ; 3 - our action taken. details in gCurSubstateF ROM:0000B3C2 ; 4 - poke action taken. details in gCurSubstateF ROM:0000B3C2 ; 5 - "was too strong" ROM:0000B3C2 ; 6 - we lost ROM:0000B3C2 ; 7 - fled ROM:0000B3C2 ; 8 - staredown ROM:0000B3C2 ; 9 - almost had it ROM:0000B3C2 ; 10 - "threw a pokeball" ROM:0000B3C2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B3C2 ; 12, 14 - pokeball flying ROM:0000B3C2 ; 13 - pokeball flying ROM:0000B3C2 ; 15 - catch animation plays ROM:0000B3C2 ; 16 - caught! ROM:0000B3C2 ; switcht: ROM:0000B3C2 ; cur slected poke name ROM:0000B3C6 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000B3C6 ; gifted items view: this is item number that has focus and arrow ROM:0000B3C6 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B3C6 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B3C6 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B3CA rts ROM:0000B3CA ; End of function goToTrainerCardMicroApp ROM:0000B3CA ROM:0000B3CC ROM:0000B3CC ; =============== S U B R O U T I N E ======================================= ROM:0000B3CC ROM:0000B3CC ROM:0000B3CC interactionHandlerTrainerCardAndStatsScreens: ROM:0000B3CC ; CODE XREF: interactionHandler:case_0x08p ROM:0000B3CC mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000B3CC ; battle: ROM:0000B3CC ; 0 - battle opening animation ROM:0000B3CC ; 1 - "XYZ appeared" message ROM:0000B3CC ; 2 - "attack evade catch" directions shown ROM:0000B3CC ; 3 - our action taken. details in gCurSubstateF ROM:0000B3CC ; 4 - poke action taken. details in gCurSubstateF ROM:0000B3CC ; 5 - "was too strong" ROM:0000B3CC ; 6 - we lost ROM:0000B3CC ; 7 - fled ROM:0000B3CC ; 8 - staredown ROM:0000B3CC ; 9 - almost had it ROM:0000B3CC ; 10 - "threw a pokeball" ROM:0000B3CC ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B3CC ; 12, 14 - pokeball flying ROM:0000B3CC ; 13 - pokeball flying ROM:0000B3CC ; 15 - catch animation plays ROM:0000B3CC ; 16 - caught! ROM:0000B3CC ; switcht: ROM:0000B3CC ; cur slected poke name ROM:0000B3D0 bne loc_B41C:8 ROM:0000B3D2 mov.b #4, r0l ROM:0000B3D4 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000B3D4 ; // 0x02 - enter ROM:0000B3D4 ; // 0x04 - left ROM:0000B3D4 ; // 0x08 - right ROM:0000B3D8 mov.b r0l, r0l ROM:0000B3DA beq loc_B3FE:8 ROM:0000B3DC mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000B3DC ; gifted items view: this is item number that has focus and arrow ROM:0000B3DC ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B3DC ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B3DC ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B3E0 bne loc_B3F2:8 ROM:0000B3E2 mov.b #1, r0l ROM:0000B3E4 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000B3E8 jsr clear_gCurSubstateY:24 ROM:0000B3EC mov.b #1, r0l ROM:0000B3EE jmp loc_B486:24 ROM:0000B3F2 ; --------------------------------------------------------------------------- ROM:0000B3F2 ROM:0000B3F2 loc_B3F2: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+14j ROM:0000B3F2 dec.b r0l ROM:0000B3F4 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000B3F4 ; gifted items view: this is item number that has focus and arrow ROM:0000B3F4 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B3F4 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B3F4 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B3F8 mov.b #2, r0l ROM:0000B3FA jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000B3FE ROM:0000B3FE loc_B3FE: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+Ej ROM:0000B3FE mov.b #8, r0l ROM:0000B400 jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000B400 ; // 0x02 - enter ROM:0000B400 ; // 0x04 - left ROM:0000B400 ; // 0x08 - right ROM:0000B404 mov.b r0l, r0l ROM:0000B406 beq loc_B41C:8 ROM:0000B408 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000B408 ; gifted items view: this is item number that has focus and arrow ROM:0000B408 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B408 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B408 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B40C cmp.b #7, r0l ROM:0000B40E bcc loc_B41C:8 ROM:0000B410 inc.b r0l ROM:0000B412 mov.b r0l, @gCurSubstateY:16 ; Substate: ROM:0000B412 ; gifted items view: this is item number that has focus and arrow ROM:0000B412 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B412 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B412 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B416 mov.b #2, r0l ROM:0000B418 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000B41C ROM:0000B41C loc_B41C: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+4j ROM:0000B41C ; interactionHandlerTrainerCardAndStatsScreens+3Aj ... ROM:0000B41C mov.b #2, r0l ROM:0000B41E jsr checkKeyStates:24 ; (r0l = desiredKeys) -> r0l whichArePressed ROM:0000B41E ; // 0x02 - enter ROM:0000B41E ; // 0x04 - left ROM:0000B41E ; // 0x08 - right ROM:0000B422 mov.b r0l, r0l ROM:0000B424 beq locret_B48A:8 ROM:0000B426 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000B426 ; battle: ROM:0000B426 ; 0 - battle opening animation ROM:0000B426 ; 1 - "XYZ appeared" message ROM:0000B426 ; 2 - "attack evade catch" directions shown ROM:0000B426 ; 3 - our action taken. details in gCurSubstateF ROM:0000B426 ; 4 - poke action taken. details in gCurSubstateF ROM:0000B426 ; 5 - "was too strong" ROM:0000B426 ; 6 - we lost ROM:0000B426 ; 7 - fled ROM:0000B426 ; 8 - staredown ROM:0000B426 ; 9 - almost had it ROM:0000B426 ; 10 - "threw a pokeball" ROM:0000B426 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B426 ; 12, 14 - pokeball flying ROM:0000B426 ; 13 - pokeball flying ROM:0000B426 ; 15 - catch animation plays ROM:0000B426 ; 16 - caught! ROM:0000B426 ; switcht: ROM:0000B426 ; cur slected poke name ROM:0000B42A beq loc_B436:8 ROM:0000B42C cmp.b #1, r0l ROM:0000B42E beq loc_B44E:8 ROM:0000B430 cmp.b #2, r0l ROM:0000B432 bne locret_B48A:8 ROM:0000B434 bra loc_B47A:8 ROM:0000B436 ; --------------------------------------------------------------------------- ROM:0000B436 ROM:0000B436 loc_B436: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+5Ej ROM:0000B436 mov.l @RamCache_totalSteps:16, er0 ROM:0000B43C cmp.l #0x98967F, er0 ROM:0000B442 bcs loc_B47A:8 ROM:0000B444 mov.b #1, r0l ROM:0000B446 mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000B446 ; battle: ROM:0000B446 ; 0 - battle opening animation ROM:0000B446 ; 1 - "XYZ appeared" message ROM:0000B446 ; 2 - "attack evade catch" directions shown ROM:0000B446 ; 3 - our action taken. details in gCurSubstateF ROM:0000B446 ; 4 - poke action taken. details in gCurSubstateF ROM:0000B446 ; 5 - "was too strong" ROM:0000B446 ; 6 - we lost ROM:0000B446 ; 7 - fled ROM:0000B446 ; 8 - staredown ROM:0000B446 ; 9 - almost had it ROM:0000B446 ; 10 - "threw a pokeball" ROM:0000B446 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B446 ; 12, 14 - pokeball flying ROM:0000B446 ; 13 - pokeball flying ROM:0000B446 ; 15 - catch animation plays ROM:0000B446 ; 16 - caught! ROM:0000B446 ; switcht: ROM:0000B446 ; cur slected poke name ROM:0000B44A sub.b r0l, r0l ROM:0000B44C bra loc_B474:8 ROM:0000B44E ; --------------------------------------------------------------------------- ROM:0000B44E ROM:0000B44E loc_B44E: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+62j ROM:0000B44E mov.w #0xCE84, r6 ROM:0000B452 add.w #4, r6 ROM:0000B456 mov.w r6, e6 ROM:0000B458 mov.w e6, r0 ROM:0000B45A jsr eepromReadSingleByte:24 ; (r0 = eepromAddr) -> r0l byte ROM:0000B45E btst #0, r0l ROM:0000B460 bne loc_B47A:8 ROM:0000B462 or.b #1, r0l ROM:0000B464 mov.b r0l, r1l ROM:0000B466 mov.w e6, r0 ROM:0000B468 jsr eepromWriteSingleByte:24 ; (r0 = eepromAddr, r1l = byte) ROM:0000B46C mov.b #2, r0l ROM:0000B46E mov.b r0l, @gCurSubstateZ:16 ; different per mode ROM:0000B46E ; battle: ROM:0000B46E ; 0 - battle opening animation ROM:0000B46E ; 1 - "XYZ appeared" message ROM:0000B46E ; 2 - "attack evade catch" directions shown ROM:0000B46E ; 3 - our action taken. details in gCurSubstateF ROM:0000B46E ; 4 - poke action taken. details in gCurSubstateF ROM:0000B46E ; 5 - "was too strong" ROM:0000B46E ; 6 - we lost ROM:0000B46E ; 7 - fled ROM:0000B46E ; 8 - staredown ROM:0000B46E ; 9 - almost had it ROM:0000B46E ; 10 - "threw a pokeball" ROM:0000B46E ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B46E ; 12, 14 - pokeball flying ROM:0000B46E ; 13 - pokeball flying ROM:0000B46E ; 15 - catch animation plays ROM:0000B46E ; 16 - caught! ROM:0000B46E ; switcht: ROM:0000B46E ; cur slected poke name ROM:0000B472 mov.b #7, r0l ROM:0000B474 ROM:0000B474 loc_B474: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+80j ROM:0000B474 jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000B478 bra locret_B48A:8 ROM:0000B47A ; --------------------------------------------------------------------------- ROM:0000B47A ROM:0000B47A loc_B47A: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+68j ROM:0000B47A ; interactionHandlerTrainerCardAndStatsScreens+76j ... ROM:0000B47A sub.b r0l, r0l ROM:0000B47C jsr randomEepromChecksumCheck:24 ; (r0l = whichArea of 16) ROM:0000B480 jsr someStateVarShuffling:24 ROM:0000B484 sub.b r0l, r0l ROM:0000B486 ROM:0000B486 loc_B486: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+22j ROM:0000B486 jsr setCurrentlyActiveView:24 ROM:0000B48A ROM:0000B48A locret_B48A: ; CODE XREF: interactionHandlerTrainerCardAndStatsScreens+58j ROM:0000B48A ; interactionHandlerTrainerCardAndStatsScreens+66j ... ROM:0000B48A rts ROM:0000B48A ; End of function interactionHandlerTrainerCardAndStatsScreens ROM:0000B48A ROM:0000B48C ROM:0000B48C ; =============== S U B R O U T I N E ======================================= ROM:0000B48C ROM:0000B48C ROM:0000B48C drawTrainerCard: ; CODE XREF: drawTrainerCardAndstatsScreens+16p ROM:0000B48C val_0x280 = r4 ROM:0000B48C val_0x40 = e5 ROM:0000B48C val_0x140 = e6 ROM:0000B48C jsr common_prologue:24 ; push {er6, er5, er4, er3, er2} ROM:0000B490 mov.w #0x40, val_0x40 ; '@' ROM:0000B494 mov.w #0x140, val_0x140 ROM:0000B498 mov.w #eepromReadToRamAlso, r3 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B49C mov.w #0x280, val_0x280 ROM:0000B4A0 mov.w #drawImageToScreen, r5 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B4A4 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000B4A8 mov.w val_0x140, r0 ROM:0000B4AA jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000B4AE mov.w r0, r6 ROM:0000B4B0 mov.w #0xA50, e4 ROM:0000B4B4 add.w val_0x280, e4 ; 0xCD0 = "TRAINER CARD" menu heading in box 80x16 ROM:0000B4B6 mov.w r0, e0 ROM:0000B4B8 mov.w e4, r0 ROM:0000B4BA mov.w val_0x140, r1 ROM:0000B4BC jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B4BE mov.w r6, e0 ROM:0000B4C0 mov.w #0x1050, r1 ROM:0000B4C4 mov.w #8, r0 ROM:0000B4C8 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B4CA mov.w #0xF90, e4 ROM:0000B4CE add.w val_0x280, e4 ; 0x1210 = "person" image for trainer card screen 16x16 ROM:0000B4D0 mov.w e4, r0 ROM:0000B4D2 mov.w val_0x40, r1 ROM:0000B4D4 mov.w r6, e0 ROM:0000B4D6 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B4D8 mov.w r6, e0 ROM:0000B4DA mov.w #0x1010, r1 ROM:0000B4DE mov.w #0x1000, r0 ROM:0000B4E2 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B4E4 mov.w #0xFD0, e4 ROM:0000B4E8 add.w val_0x280, e4 ; 0x1250 = trainer's name rendered as an image 80x16 ROM:0000B4EA mov.w e4, r0 ROM:0000B4EC mov.w val_0x140, r1 ROM:0000B4EE mov.w r6, e0 ROM:0000B4F0 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B4F2 mov.w r6, e0 ROM:0000B4F4 mov.w #0x1050, r1 ROM:0000B4F8 mov.w #0x1010, r0 ROM:0000B4FC jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B4FE mov.w #0x1110, e4 ROM:0000B502 add.w val_0x280, e4 ; 0x1390 = "area" icon for trainer card screen 16x16 ROM:0000B504 mov.w e4, r0 ROM:0000B506 mov.w val_0x40, r1 ROM:0000B508 mov.w r6, e0 ROM:0000B50A jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B50C mov.w r6, e0 ROM:0000B50E mov.w #0x1010, r1 ROM:0000B512 mov.w #0x2000, r0 ROM:0000B516 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B518 mov.b @RamCache_settingsByte:16, r0l ROM:0000B51C bld #0, r0l ROM:0000B51E bcc loc_B526:8 ROM:0000B520 ROM:0000B520 in_special_event: ; special event area textual name image 80x16 ROM:0000B520 mov.w #0xC8FC, e4 ROM:0000B524 bra loc_B52A:8 ROM:0000B526 ; --------------------------------------------------------------------------- ROM:0000B526 ROM:0000B526 loc_B526: ; CODE XREF: drawTrainerCard+92j ROM:0000B526 mov.w #0x907E, e4 ; 0x907E = current "area" we are strolling in textual name 80x16 ROM:0000B52A ROM:0000B52A loc_B52A: ; CODE XREF: drawTrainerCard+98j ROM:0000B52A mov.w e4, r0 ROM:0000B52C mov.w val_0x140, r1 ROM:0000B52E mov.w r6, e0 ROM:0000B530 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B532 mov.w r6, e0 ROM:0000B534 mov.w #0x1050, r1 ROM:0000B538 mov.w #0x2010, r0 ROM:0000B53C jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B53E mov.w #0x338, e4 ROM:0000B542 add.w val_0x280, e4 ; 0x05B8 = left arrow for menu activity picker navigation 8x16, then right ROM:0000B544 mov.w e4, r0 ROM:0000B546 mov.w #0xC0, r1 ; '+' ROM:0000B54A mov.w r6, e0 ROM:0000B54C jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B54E mov.w r6, r0 ROM:0000B550 add.w val_0x40, r0 ; skip to right arrow ROM:0000B552 mov.w r0, e0 ROM:0000B554 mov.w #0x1008, r1 ROM:0000B558 sub.w r0, r0 ROM:0000B55A jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B55C mov.w r6, r0 ROM:0000B55E add.w #0x20, r0 ; ' ' ; draw return arrow ROM:0000B562 mov.w r0, e0 ROM:0000B564 mov.w #0x1008, r1 ROM:0000B568 mov.w #0x58, r0 ; 'X' ROM:0000B56C jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B56E mov.w #0x11F0, e4 ROM:0000B572 add.w val_0x280, e4 ; 0x1470 = "time" in frame for trainer card 32x16 ROM:0000B574 mov.w e4, r0 ROM:0000B576 mov.w #0x80, r1 ; 'Ç' ROM:0000B57A mov.w r6, e0 ROM:0000B57C jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B57E mov.w r6, e0 ROM:0000B580 mov.w #0x1020, r1 ROM:0000B584 mov.w #0x3000, r0 ROM:0000B588 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B58A mov.w val_0x280, e4 ; read character images ROM:0000B58C mov.w e4, r0 ROM:0000B58E mov.w val_0x140, r1 ROM:0000B590 mov.w r6, e0 ROM:0000B592 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B594 mov.b @currentHour:16, r0l ROM:0000B598 extu.w r0 ROM:0000B59A shar.w r0 ROM:0000B59C shar.w r0 ROM:0000B59E shar.w r0 ROM:0000B5A0 shar.w r0 ROM:0000B5A2 and.w #7, r0 ROM:0000B5A6 mov.w #0x20, e0 ; ' ' ; each character ROM:0000B5AA mulxu.w e0, er0 ROM:0000B5AC add.w r6, r0 ROM:0000B5AE mov.w r0, e0 ROM:0000B5B0 mov.w #0x1008, r1 ROM:0000B5B4 mov.w #0x3020, r0 ROM:0000B5B8 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B5BA mov.b @currentHour:16, r0l ROM:0000B5BE and.b #0xF, r0l ROM:0000B5C0 extu.w r0 ROM:0000B5C2 mov.w #0x20, e0 ; ' ' ROM:0000B5C6 mulxu.w e0, er0 ROM:0000B5C8 add.w r6, r0 ROM:0000B5CA mov.w r0, e0 ROM:0000B5CC mov.w #0x1008, r1 ROM:0000B5D0 mov.w #0x3028, r0 ROM:0000B5D4 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B5D6 mov.b @currentMinute:16, r0l ROM:0000B5DA extu.w r0 ROM:0000B5DC shar.w r0 ROM:0000B5DE shar.w r0 ROM:0000B5E0 shar.w r0 ROM:0000B5E2 shar.w r0 ROM:0000B5E4 and.w #7, r0 ROM:0000B5E8 mov.w #0x20, e0 ; ' ' ROM:0000B5EC mulxu.w e0, er0 ROM:0000B5EE add.w r6, r0 ROM:0000B5F0 mov.w r0, e0 ROM:0000B5F2 mov.w #0x1008, r1 ROM:0000B5F6 mov.w #0x3038, r0 ROM:0000B5FA jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B5FC mov.b @currentMinute:16, r0l ROM:0000B600 and.b #0xF, r0l ROM:0000B602 extu.w r0 ROM:0000B604 mov.w #0x20, e0 ; ' ' ROM:0000B608 mulxu.w e0, er0 ROM:0000B60A add.w r6, r0 ROM:0000B60C mov.w r0, e0 ROM:0000B60E mov.w #0x1008, r1 ROM:0000B612 mov.w #0x3040, r0 ROM:0000B616 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B618 mov.b @currentSecond:16, r0l ROM:0000B61C extu.w r0 ROM:0000B61E shar.w r0 ROM:0000B620 shar.w r0 ROM:0000B622 shar.w r0 ROM:0000B624 shar.w r0 ROM:0000B626 and.w #7, r0 ROM:0000B62A mov.w #0x20, e0 ; ' ' ROM:0000B62E mulxu.w e0, er0 ROM:0000B630 add.w r6, r0 ROM:0000B632 mov.w r0, e0 ROM:0000B634 mov.w #0x1008, r1 ROM:0000B638 mov.w #0x3050, r0 ROM:0000B63C jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B63E mov.b @currentSecond:16, r0l ROM:0000B642 and.b #0xF, r0l ROM:0000B644 extu.w r0 ROM:0000B646 mov.w #0x20, e0 ; ' ' ROM:0000B64A mulxu.w e0, er0 ROM:0000B64C add.w r6, r0 ROM:0000B64E mov.w r0, e0 ROM:0000B650 mov.w #0x1008, r1 ROM:0000B654 mov.w #0x3058, r0 ROM:0000B658 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B65A mov.w val_0x280, r0 ROM:0000B65C add.w val_0x140, r0 ; image for the colon char ROM:0000B65E mov.w #0x20, r1 ; ' ' ROM:0000B662 mov.w r6, e0 ROM:0000B664 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B666 mov.w r6, e0 ROM:0000B668 mov.w #0x1008, r1 ROM:0000B66C mov.w #0x3030, r0 ROM:0000B670 jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B672 mov.w r6, e0 ROM:0000B674 mov.w #0x1008, r1 ROM:0000B678 mov.w #0x3048, r0 ROM:0000B67C jsr @er5 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B67E jmp common_epologue:24 ; pop {er2, er3, er4, er5, er6} ROM:0000B67E ; End of function drawTrainerCard ROM:0000B67E ROM:0000B682 ROM:0000B682 ; =============== S U B R O U T I N E ======================================= ROM:0000B682 ROM:0000B682 ROM:0000B682 drawStepStatisticsScreen: ; CODE XREF: drawTrainerCardAndstatsScreens:loc_B90Ep ROM:0000B682 ROM:0000B682 var_4 = -4 ROM:0000B682 ROM:0000B682 val_0x280 = r5 ROM:0000B682 push.l er2 ROM:0000B686 push.w r3 ROM:0000B688 push.w r4 ROM:0000B68A push.l er5 ROM:0000B68E push.l er6 ROM:0000B692 subs #4, sp ROM:0000B694 mov.w #eepromReadToRamAlso, r3 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B698 mov.w #drawImageToScreen, r4 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B69C mov.w #0x280, val_0x280 ROM:0000B6A0 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000B6A4 mov.w #0x140, r0 ROM:0000B6A8 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000B6AC mov.w r0, r6 ROM:0000B6AE mov.w #0x338, e6 ; 05B8 = left arrow for menu activity picker navigation 8x16 ROM:0000B6B2 add.w val_0x280, e6 ROM:0000B6B4 mov.w r0, e0 ROM:0000B6B6 mov.w e6, r0 ROM:0000B6B8 mov.w #0xC0, r1 ; '+' ROM:0000B6BC jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B6BE mov.w r6, e0 ROM:0000B6C0 mov.w #0x1008, r1 ROM:0000B6C4 sub.w r0, r0 ROM:0000B6C6 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B6C8 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000B6C8 ; gifted items view: this is item number that has focus and arrow ROM:0000B6C8 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B6C8 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B6C8 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B6CC cmp.b #7, r0l ROM:0000B6CE bcc loc_B6E2:8 ROM:0000B6D0 mov.w r6, r0 ROM:0000B6D2 add.w #0x20, r0 ; ' ' ROM:0000B6D6 mov.w r0, e0 ROM:0000B6D8 mov.w #0x1008, r1 ROM:0000B6DC mov.w #0x58, r0 ; 'X' ROM:0000B6E0 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B6E2 ROM:0000B6E2 loc_B6E2: ; CODE XREF: drawStepStatisticsScreen+4Cj ROM:0000B6E2 mov.w #0x1270, e6 ROM:0000B6E6 add.w val_0x280, e6 ; 0x14F0 = "days" in frame for second screen of trainer card 40x16 ROM:0000B6E8 mov.w e6, r0 ROM:0000B6EA mov.w #0xA0, r1 ; 'á' ROM:0000B6EE mov.w r6, e0 ROM:0000B6F0 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B6F2 mov.w r6, e0 ROM:0000B6F4 mov.w #0x1028, r1 ROM:0000B6F8 mov.w #0x28, r0 ; '(' ROM:0000B6FC jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B6FE mov.w #0x1310, e6 ROM:0000B702 add.w val_0x280, e6 ; 0x1590 = "total days:" in frame for second screen of trainer card 64x16 ROM:0000B704 mov.w e6, r0 ROM:0000B706 mov.w #0x100, r1 ROM:0000B70A mov.w r6, e0 ROM:0000B70C jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B70E mov.w r6, e0 ROM:0000B710 mov.w #0x1040, r1 ROM:0000B714 mov.w #0x2000, r0 ROM:0000B718 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B71A mov.w #0x1150, e6 ROM:0000B71E add.w val_0x280, e6 ; 0x13D0 = "steps" in frame for second screen of trainer card 40x16 ROM:0000B720 mov.w e6, r0 ROM:0000B722 mov.w #0xA0, r1 ; 'á' ROM:0000B726 mov.w r6, e0 ROM:0000B728 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B72A mov.w r6, e0 ROM:0000B72C mov.w #0x1028, r1 ROM:0000B730 mov.w #0x1038, r0 ROM:0000B734 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B736 mov.w r6, e0 ROM:0000B738 mov.w #0x1028, r1 ROM:0000B73C mov.w #0x3038, r0 ROM:0000B740 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B742 mov.w #0x160, e6 ROM:0000B746 add.w val_0x280, e6 ; dash character ROM:0000B748 mov.w e6, r0 ROM:0000B74A mov.w #0x20, r1 ; ' ' ROM:0000B74E mov.w r6, e0 ROM:0000B750 jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B752 mov.w r6, e0 ROM:0000B754 mov.w #0x1008, r1 ROM:0000B758 mov.w #0x18, r0 ROM:0000B75C jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B75E mov.w val_0x280, e6 ROM:0000B760 mov.w e6, r0 ROM:0000B762 mov.w #0x140, r1 ROM:0000B766 mov.w r6, e0 ROM:0000B768 jsr @er3 ROM:0000B76A mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000B76A ; gifted items view: this is item number that has focus and arrow ROM:0000B76A ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B76A ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B76A ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B76E extu.w r0 ROM:0000B770 mov.w #0x20, e0 ; ' ' ROM:0000B774 mulxu.w e0, er0 ROM:0000B776 add.w r0, r6 ROM:0000B778 mov.w r6, e0 ROM:0000B77A mov.w #0x1008, r1 ROM:0000B77E mov.w #0x20, r0 ; ' ' ROM:0000B782 jsr @er4 ; drawImageToScreen(r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B784 mov.w r7, e0 ROM:0000B786 mov.b @gCurSubstateY:16, r1l ; Substate: ROM:0000B786 ; gifted items view: this is item number that has focus and arrow ROM:0000B786 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B786 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B786 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B78A extu.w r1 ROM:0000B78C dec.w #1, r1 ROM:0000B78E shll.w r1 ROM:0000B790 shll.w r1 ROM:0000B792 mov.w #0xCEF0, r0 ; historic step count per day ROM:0000B796 add.w r1, r0 ROM:0000B798 mov.w #4, r1 ROM:0000B79C jsr @er3 ; eepromReadToRamAlso(r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B79E sub.b r0l, r0l ROM:0000B7A0 push.w r0 ROM:0000B7A2 mov.l @(6+var_4:16,sp), er1 ROM:0000B7A8 mov.w #0x1030, r0 ROM:0000B7AC jsr drawNumberOnscreen:24 ; ( ROM:0000B7AC ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:0000B7AC ; r0h = y ROM:0000B7AC ; er1 = number ROM:0000B7AC ; [sp] = bool addOverline ROM:0000B7AC ; ) ROM:0000B7B0 adds #2, sp ROM:0000B7B2 sub.b r0l, r0l ROM:0000B7B4 push.w r0 ROM:0000B7B6 mov.w @RamCache_totalDays:16, r1 ROM:0000B7BA extu.l er1 ROM:0000B7BC mov.w #0x2058, r0 ROM:0000B7C0 jsr drawNumberOnscreen:24 ; ( ROM:0000B7C0 ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:0000B7C0 ; r0h = y ROM:0000B7C0 ; er1 = number ROM:0000B7C0 ; [sp] = bool addOverline ROM:0000B7C0 ; ) ROM:0000B7C4 adds #2, sp ROM:0000B7C6 sub.b r0l, r0l ROM:0000B7C8 push.w r0 ROM:0000B7CA mov.l @RamCache_totalSteps:16, er1 ROM:0000B7D0 mov.w #0x3030, r0 ROM:0000B7D4 jsr drawNumberOnscreen:24 ; ( ROM:0000B7D4 ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:0000B7D4 ; r0h = y ROM:0000B7D4 ; er1 = number ROM:0000B7D4 ; [sp] = bool addOverline ROM:0000B7D4 ; ) ROM:0000B7D8 adds #2, sp ROM:0000B7DA adds #4, sp ROM:0000B7DC pop.l er6 ROM:0000B7E0 pop.l er5 ROM:0000B7E4 pop.w r4 ROM:0000B7E6 pop.w r3 ROM:0000B7E8 pop.l er2 ROM:0000B7EC rts ROM:0000B7EC ; End of function drawStepStatisticsScreen ROM:0000B7EC ROM:0000B7EE ROM:0000B7EE ; =============== S U B R O U T I N E ======================================= ROM:0000B7EE ROM:0000B7EE ; showns on reaching 9999999 steps and pressing "enter" in stats screen ROM:0000B7EE ROM:0000B7EE showGoodJobBanner: ; CODE XREF: drawTrainerCardAndstatsScreens:loc_B914p ROM:0000B7EE val_0x280 = r3 ROM:0000B7EE index = r5l ROM:0000B7EE push.l er2 ROM:0000B7F2 push.w val_0x280 ROM:0000B7F4 push.w r4 ROM:0000B7F6 push.l er5 ROM:0000B7FA push.w r6 ROM:0000B7FC mov.w #0x280, val_0x280 ROM:0000B800 jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000B804 mov.w #0x140, r0 ROM:0000B808 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000B80C mov.w r0, r6 ROM:0000B80E mov.w r0, e0 ROM:0000B810 mov.w val_0x280, r0 ; characters ROM:0000B812 mov.w #0x140, r1 ROM:0000B816 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B81A sub.b index, index ROM:0000B81C mov.w r6, r4 ROM:0000B81E add.w #0x120, r4 ; character image for '9' ROM:0000B822 ROM:0000B822 loc_B822: ; CODE XREF: showGoodJobBanner+4Aj ROM:0000B822 mov.b index, r0l ROM:0000B824 mov.b #8, r0h ; draw 7 nines basically ROM:0000B826 mulxu.b r0h, r0 ROM:0000B828 mov.w r4, e0 ROM:0000B82A mov.w #0x1008, r1 ROM:0000B82E mov.b #8, r0h ROM:0000B830 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B834 inc.b index ROM:0000B836 cmp.b #7, index ROM:0000B838 bcs loc_B822:8 ROM:0000B83A mov.w #0x1150, r0 ; 0x13D0 = "steps" in frame for second screen of trainer card 40x16 ROM:0000B83E add.w val_0x280, r0 ROM:0000B840 mov.w #0xA0, r1 ; 'á' ROM:0000B844 mov.w r6, e0 ROM:0000B846 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B84A mov.w r6, e0 ROM:0000B84C mov.w #0x1028, r1 ROM:0000B850 mov.w #0x838, r0 ROM:0000B854 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B858 mov.w #0x2210, r0 ROM:0000B85C add.w val_0x280, r0 ; 2490 "HOURS" in a pretty frame ROM:0000B85E mov.w #0xA0, r1 ; 'á' ROM:0000B862 mov.w r6, e0 ROM:0000B864 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B868 mov.w r6, e0 ROM:0000B86A mov.w #0x1028, r1 ROM:0000B86E mov.w #0x2838, r0 ROM:0000B872 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B876 sub.b r0l, r0l ROM:0000B878 push.w r0 ROM:0000B87A mov.l @RamCache_STEP_COUNT_maybe:16, er1 ROM:0000B880 mov.w #0x2830, r0 ROM:0000B884 jsr drawNumberOnscreen:24 ; ( ROM:0000B884 ; r0l = x //left side of rightmost chars. at most one char right of this, possibly many left ROM:0000B884 ; r0h = y ROM:0000B884 ; er1 = number ROM:0000B884 ; [sp] = bool addOverline ROM:0000B884 ; ) ROM:0000B888 adds #2, sp ROM:0000B88A mov.w #0x10F, r1 ROM:0000B88E mov.w #0x4318, r0 ; "Good job!" ROM:0000B892 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000B892 ; ROM:0000B892 ; //always drawn at x = 0 ROM:0000B892 ; ROM:0000B896 pop.w r6 ROM:0000B898 pop.l er5 ROM:0000B89C pop.w r4 ROM:0000B89E pop.w val_0x280 ROM:0000B8A0 pop.l er2 ROM:0000B8A4 rts ROM:0000B8A4 ; End of function showGoodJobBanner ROM:0000B8A4 ROM:0000B8A6 ROM:0000B8A6 ; =============== S U B R O U T I N E ======================================= ROM:0000B8A6 ROM:0000B8A6 ROM:0000B8A6 drawRewardReceivedBanner: ; CODE XREF: drawTrainerCardAndstatsScreens:loc_B91Ap ROM:0000B8A6 push.w r2 ROM:0000B8A8 push.w r6 ROM:0000B8AA jsr setHeapPointer:24 ; uses space in normal ir rx buffer (0xf8f0) ROM:0000B8AE mov.w #0xC0, r0 ; '+' ROM:0000B8B2 jsr static_malloc:24 ; (r0 = size) -> r0 = ptr ROM:0000B8B6 mov.w r0, r6 ROM:0000B8B8 mov.w r0, e0 ROM:0000B8BA mov.w #0x1910, r0 ; large treasure chest icon for item view 32x24 ROM:0000B8BE mov.w #0xC0, r1 ; '+' ROM:0000B8C2 jsr eepromReadToRamAlso:24 ; (r0 = eepromAddr, e0 = ramDstPtr, r1 = nbytes) ROM:0000B8C6 mov.w r6, e0 ROM:0000B8C8 mov.w #0x1820, r1 ROM:0000B8CC mov.w #0x420, r0 ROM:0000B8D0 jsr drawImageToScreen:24 ; (r0l = x, r0h = y, e0 = imageDataInRam, r1l = imgWidth, r1h = imgHeight) ROM:0000B8D4 mov.w #0xD, r1 ROM:0000B8D8 mov.w #0x4220, r0 ; "Reward" ROM:0000B8DC jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000B8DC ; ROM:0000B8DC ; //always drawn at x = 0 ROM:0000B8DC ; ROM:0000B8E0 mov.w #0x10E, r1 ROM:0000B8E4 mov.w #0xF30, r0 ; "received!" ROM:0000B8E8 jsr drawLargeMessagePotentiallyWithBlinkingCursor:24 ; (r0l = y, r0h = messageIdx, r1l = borderFlagBits, r1h = bool blinkCursorInBottomRight) ROM:0000B8E8 ; ROM:0000B8E8 ; //always drawn at x = 0 ROM:0000B8E8 ; ROM:0000B8EC pop.w r6 ROM:0000B8EE pop.w r2 ROM:0000B8F0 rts ROM:0000B8F0 ; End of function drawRewardReceivedBanner ROM:0000B8F0 ROM:0000B8F2 ROM:0000B8F2 ; =============== S U B R O U T I N E ======================================= ROM:0000B8F2 ROM:0000B8F2 ROM:0000B8F2 drawTrainerCardAndstatsScreens: ; CODE XREF: maybe_viewDoDisplay:case__0x08p ROM:0000B8F2 mov.b @gCurSubstateZ:16, r0l ; different per mode ROM:0000B8F2 ; battle: ROM:0000B8F2 ; 0 - battle opening animation ROM:0000B8F2 ; 1 - "XYZ appeared" message ROM:0000B8F2 ; 2 - "attack evade catch" directions shown ROM:0000B8F2 ; 3 - our action taken. details in gCurSubstateF ROM:0000B8F2 ; 4 - poke action taken. details in gCurSubstateF ROM:0000B8F2 ; 5 - "was too strong" ROM:0000B8F2 ; 6 - we lost ROM:0000B8F2 ; 7 - fled ROM:0000B8F2 ; 8 - staredown ROM:0000B8F2 ; 9 - almost had it ROM:0000B8F2 ; 10 - "threw a pokeball" ROM:0000B8F2 ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself ROM:0000B8F2 ; 12, 14 - pokeball flying ROM:0000B8F2 ; 13 - pokeball flying ROM:0000B8F2 ; 15 - catch animation plays ROM:0000B8F2 ; 16 - caught! ROM:0000B8F2 ; switcht: ROM:0000B8F2 ; cur slected poke name ROM:0000B8F6 beq loc_B902:8 ROM:0000B8F8 cmp.b #1, r0l ROM:0000B8FA beq loc_B914:8 ROM:0000B8FC cmp.b #2, r0l ROM:0000B8FE bne loc_B91C:8 ROM:0000B900 bra loc_B91A:8 ROM:0000B902 ; --------------------------------------------------------------------------- ROM:0000B902 ROM:0000B902 loc_B902: ; CODE XREF: drawTrainerCardAndstatsScreens+4j ROM:0000B902 mov.b @gCurSubstateY:16, r0l ; Substate: ROM:0000B902 ; gifted items view: this is item number that has focus and arrow ROM:0000B902 ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda ROM:0000B902 ; battle: poke idx (1..3 is route poke, 4 is event poke) ROM:0000B902 ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) ROM:0000B906 bne loc_B90E:8 ROM:0000B908 jsr drawTrainerCard:24 ROM:0000B90C bra loc_B91C:8 ROM:0000B90E ; --------------------------------------------------------------------------- ROM:0000B90E ROM:0000B90E loc_B90E: ; CODE XREF: drawTrainerCardAndstatsScreens+14j ROM:0000B90E jsr drawStepStatisticsScreen:24 ROM:0000B912 bra loc_B91C:8 ROM:0000B914 ; --------------------------------------------------------------------------- ROM:0000B914 ROM:0000B914 loc_B914: ; CODE XREF: drawTrainerCardAndstatsScreens+8j ROM:0000B914 jsr showGoodJobBanner:24 ; showns on reaching 9999999 steps and pressing "enter" in stats screen ROM:0000B918 bra loc_B91C:8 ROM:0000B91A ; --------------------------------------------------------------------------- ROM:0000B91A ROM:0000B91A loc_B91A: ; CODE XREF: drawTrainerCardAndstatsScreens+Ej ROM:0000B91A bsr drawRewardReceivedBanner:8 ROM:0000B91C ROM:0000B91C loc_B91C: ; CODE XREF: drawTrainerCardAndstatsScreens+Cj ROM:0000B91C ; drawTrainerCardAndstatsScreens+1Aj ... ROM:0000B91C mov.w #0x58, r0 ; 'X' ROM:0000B920 jmp drawLowBatteryIconAnimationFrame:24 ; (r0l = x, r0h = y) //also determined if this is needed at all ROM:0000B920 ; End of function drawTrainerCardAndstatsScreens ROM:0000B920 ROM:0000B924 ROM:0000B924 ; =============== S U B R O U T I N E ======================================= ROM:0000B924 ROM:0000B924 ; (r0 = u8*, r1l = valToInsert, r2l = numBits, r2h = bistOffsetFromLeft /* 0 means modify top bits */) //bitfield is 8 bits big only ROM:0000B924 ROM:0000B924 bitfieldInsert: ; CODE XREF: irCommsEventLoop+6B2p ROM:0000B924 ; irCommsEventLoop+E70p ... ROM:0000B924 push.w r3 ROM:0000B926 push.w r1 ROM:0000B928 mov.b #0, r1h ROM:0000B92A bset r2l, r1h ROM:0000B92C dec.b r1h ; r1h = (1 << r2l) - 1 ROM:0000B92E and.b r1h, r1l ; r1l &= r1h ROM:0000B930 mov.b #8, r3l ROM:0000B932 sub.b r2h, r3l ROM:0000B934 sub.b r2l, r3l ; 8 - r2h - r2l ROM:0000B936 beq loc_B93E:8 ; r1 <<= (8 - r2h - r2l) ROM:0000B938 ROM:0000B938 loc_B938: ; CODE XREF: bitfieldInsert+18j ROM:0000B938 shll.w r1 ROM:0000B93A dec.b r3l ROM:0000B93C bgt loc_B938:8 ROM:0000B93E ROM:0000B93E loc_B93E: ; CODE XREF: bitfieldInsert+12j ROM:0000B93E mov.b @er0, r3l ; *r0 &=~ r1h - clear the mask ROM:0000B940 not.b r1h ROM:0000B942 and.b r1h, r3l ROM:0000B944 or.b r1l, r3l ; *r0 |= r1l - insert the bits ROM:0000B946 mov.b r3l, @er0 ROM:0000B948 pop.w r1 ROM:0000B94A pop.w r3 ROM:0000B94C rts ROM:0000B94C ; End of function bitfieldInsert ROM:0000B94C ROM:0000B94E ROM:0000B94E ; =============== S U B R O U T I N E ======================================= ROM:0000B94E ROM:0000B94E ; er0 = er0 / er1, er1 = er0 % er1 ROM:0000B94E ROM:0000B94E divmod32: ; CODE XREF: drawNumberOnscreen+70p ROM:0000B94E ; drawNumberOnscreen+92p ... ROM:0000B94E push.l er2 ROM:0000B952 mov.w e1, e1 ROM:0000B954 bne denom_is_more_than_16_bits:8 ROM:0000B956 ROM:0000B956 denom_is_16_bits: ROM:0000B956 mov.w e0, r2 ROM:0000B958 extu.l er2 ROM:0000B95A divxu.w r1, er2 ROM:0000B95C mov.w e2, e0 ROM:0000B95E divxu.w r1, er0 ROM:0000B960 mov.w e0, r1 ROM:0000B962 mov.w r2, e0 ROM:0000B964 bra loc_B984:8 ROM:0000B966 ; --------------------------------------------------------------------------- ROM:0000B966 ROM:0000B966 denom_is_more_than_16_bits: ; CODE XREF: divmod32+6j ROM:0000B966 mov.l er1, er2 ROM:0000B968 mov.w e0, r1 ROM:0000B96A extu.l er1 ROM:0000B96C mov.w #0x10, e0 ROM:0000B970 ROM:0000B970 loc_B970: ; CODE XREF: divmod32+2Ej ROM:0000B970 rotxl.w r0 ROM:0000B972 rotxl.l er1 ROM:0000B974 sub.l er2, er1 ROM:0000B976 bcc loc_B97A:8 ROM:0000B978 add.l er2, er1 ROM:0000B97A ROM:0000B97A loc_B97A: ; CODE XREF: divmod32+28j ROM:0000B97A dec.w #1, e0 ROM:0000B97C bne loc_B970:8 ROM:0000B97E rotxl.w r0 ROM:0000B980 not.w r0 ROM:0000B982 extu.l er0 ROM:0000B984 ROM:0000B984 loc_B984: ; CODE XREF: divmod32+16j ROM:0000B984 pop.l er2 ROM:0000B988 rts ROM:0000B988 ; End of function divmod32 ROM:0000B988 ROM:0000B98A ROM:0000B98A ; =============== S U B R O U T I N E ======================================= ROM:0000B98A ROM:0000B98A ; (r0 = ptr, r1 shlBy) // *(uint8_t*)ptr <<= by ROM:0000B98A ROM:0000B98A lslByteAtPtr: ; CODE XREF: moveImageVerticaly+BEp ROM:0000B98A push.w r1 ROM:0000B98C mov.b @er0, r1h ROM:0000B98E bra loc_B992:8 ROM:0000B990 ; --------------------------------------------------------------------------- ROM:0000B990 ROM:0000B990 loc_B990: ; CODE XREF: lslByteAtPtr+Aj ROM:0000B990 shll.b r1h ROM:0000B992 ROM:0000B992 loc_B992: ; CODE XREF: lslByteAtPtr+4j ROM:0000B992 dec.b r1l ROM:0000B994 bge loc_B990:8 ROM:0000B996 mov.b r1h, @er0 ROM:0000B998 pop.w r1 ROM:0000B99A rts ROM:0000B99A ; End of function lslByteAtPtr ROM:0000B99A ROM:0000B99C ROM:0000B99C ; =============== S U B R O U T I N E ======================================= ROM:0000B99C ROM:0000B99C ; (r0 = ptr, r1 shrBy) // *(uint8_t*)ptr >>= by ROM:0000B99C ROM:0000B99C lsrByteAtPtr: ; CODE XREF: moveImageVerticaly+50p ROM:0000B99C ; drawMusicNoteWithVariableShiftUp+30p ROM:0000B99C push.w r1 ROM:0000B99E mov.b @er0, r1h ROM:0000B9A0 bra loc_B9A4:8 ROM:0000B9A2 ; --------------------------------------------------------------------------- ROM:0000B9A2 ROM:0000B9A2 loc_B9A2: ; CODE XREF: lsrByteAtPtr+Aj ROM:0000B9A2 shlr.b r1h ROM:0000B9A4 ROM:0000B9A4 loc_B9A4: ; CODE XREF: lsrByteAtPtr+4j ROM:0000B9A4 dec.b r1l ROM:0000B9A6 bge loc_B9A2:8 ROM:0000B9A8 mov.b r1h, @er0 ROM:0000B9AA pop.w r1 ROM:0000B9AC rts ROM:0000B9AC ; End of function lsrByteAtPtr ROM:0000B9AC ROM:0000B9AE ROM:0000B9AE ; =============== S U B R O U T I N E ======================================= ROM:0000B9AE ROM:0000B9AE ; er0 = er0 * er1 ROM:0000B9AE ROM:0000B9AE mul32: ; CODE XREF: rand+14p ROM:0000B9AE ; timer_w_irq+D8p ... ROM:0000B9AE push.l er3 ROM:0000B9B2 push.l er2 ROM:0000B9B6 mov.w e0, r2 ROM:0000B9B8 mulxu.w r1, er2 ; er2 = r1.lo * r0.hi ROM:0000B9BA mov.w e1, r3 ROM:0000B9BC mulxu.w r0, er3 ; er3 = r1.hi * r0.lo ROM:0000B9BE mulxu.w r1, er0 ; er0 = r0.lo * r1.lo ROM:0000B9C0 add.w r2, e0 ROM:0000B9C2 add.w r3, e0 ROM:0000B9C4 pop.l er2 ROM:0000B9C8 pop.l er3 ROM:0000B9CC rts ROM:0000B9CC ; End of function mul32 ROM:0000B9CC ROM:0000B9CE ROM:0000B9CE ; =============== S U B R O U T I N E ======================================= ROM:0000B9CE ROM:0000B9CE ; (r0 = src, r1 = dst, r2 = len) ROM:0000B9CE ROM:0000B9CE memoryCopy: ; CODE XREF: processSyncPacketFromGame+1Ep ROM:0000B9CE ; irCommsEventLoop+472p ... ROM:0000B9CE push.w r0 ROM:0000B9D0 push.w r1 ROM:0000B9D2 push.l er2 ROM:0000B9D6 push.l er3 ROM:0000B9DA btst #0, r1l ROM:0000B9DC beq loc_B9E6:8 ROM:0000B9DE mov.b @er0+, r3l ROM:0000B9E0 mov.b r3l, @er1 ROM:0000B9E2 adds #1, er1 ROM:0000B9E4 dec.w #1, r2 ROM:0000B9E6 ROM:0000B9E6 loc_B9E6: ; CODE XREF: memoryCopy+Ej ROM:0000B9E6 mov.w r2, e2 ROM:0000B9E8 shlr.w e2 ROM:0000B9EA btst #0, r0l ROM:0000B9EC beq loc_BA10:8 ROM:0000B9EE shlr.w e2 ROM:0000B9F0 beq loc_BA06:8 ROM:0000B9F2 ROM:0000B9F2 loc_B9F2: ; CODE XREF: memoryCopy+36j ROM:0000B9F2 mov.b @er0+, r3h ROM:0000B9F4 mov.b @er0+, r3l ROM:0000B9F6 mov.w r3, e3 ROM:0000B9F8 mov.b @er0+, r3h ROM:0000B9FA mov.b @er0+, r3l ROM:0000B9FC mov.l er3, @er1 ROM:0000BA00 adds #4, er1 ROM:0000BA02 dec.w #1, e2 ROM:0000BA04 bne loc_B9F2:8 ROM:0000BA06 ROM:0000BA06 loc_BA06: ; CODE XREF: memoryCopy+22j ROM:0000BA06 btst #1, r2l ROM:0000BA08 beq loc_BA2C:8 ROM:0000BA0A mov.b @er0+, r3h ROM:0000BA0C mov.b @er0+, r3l ROM:0000BA0E bra loc_BA28:8 ROM:0000BA10 ; --------------------------------------------------------------------------- ROM:0000BA10 ROM:0000BA10 loc_BA10: ; CODE XREF: memoryCopy+1Ej ROM:0000BA10 shlr.w e2 ROM:0000BA12 beq loc_BA22:8 ROM:0000BA14 ROM:0000BA14 loc_BA14: ; CODE XREF: memoryCopy+52j ROM:0000BA14 mov.l @er0+, er3 ROM:0000BA18 mov.l er3, @er1 ROM:0000BA1C adds #4, er1 ROM:0000BA1E dec.w #1, e2 ROM:0000BA20 bne loc_BA14:8 ROM:0000BA22 ROM:0000BA22 loc_BA22: ; CODE XREF: memoryCopy+44j ROM:0000BA22 btst #1, r2l ROM:0000BA24 beq loc_BA2C:8 ROM:0000BA26 mov.w @er0+, r3 ROM:0000BA28 ROM:0000BA28 loc_BA28: ; CODE XREF: memoryCopy+40j ROM:0000BA28 mov.w r3, @er1 ROM:0000BA2A adds #2, er1 ROM:0000BA2C ROM:0000BA2C loc_BA2C: ; CODE XREF: memoryCopy+3Aj ROM:0000BA2C ; memoryCopy+56j ROM:0000BA2C btst #0, r2l ROM:0000BA2E beq loc_BA34:8 ROM:0000BA30 mov.b @er0, r3l ROM:0000BA32 mov.b r3l, @er1 ROM:0000BA34 ROM:0000BA34 loc_BA34: ; CODE XREF: memoryCopy+60j ROM:0000BA34 pop.l er3 ROM:0000BA38 pop.l er2 ROM:0000BA3C pop.w r1 ROM:0000BA3E pop.w r0 ROM:0000BA40 rts ROM:0000BA40 ; End of function memoryCopy ROM:0000BA40 ROM:0000BA42 ROM:0000BA42 ; =============== S U B R O U T I N E ======================================= ROM:0000BA42 ROM:0000BA42 ; push {er6, er5, er4, er3, er2} ROM:0000BA42 ROM:0000BA42 common_prologue: ; CODE XREF: calcPacketCrcp ROM:0000BA42 ; sendPacketp ... ROM:0000BA42 subs #2, sp ; make space for 2 byte son stack ROM:0000BA44 push.l er5 ROM:0000BA48 push.l er4 ROM:0000BA4C push.l er3 ROM:0000BA50 push.l er2 ROM:0000BA54 mov.w @(0x12:16,sp), r2 ; return address of here we were called from ROM:0000BA58 push.w r2 ; push it now so we can RTS to it ROM:0000BA5A mov.l er6, @(0x12:16,sp) ; use former space of ret addr, and the 2 bytes we allocated to save er6 ROM:0000BA60 rts ROM:0000BA60 ; End of function common_prologue ROM:0000BA60 ROM:0000BA62 ; --------------------------------------------------------------------------- ROM:0000BA62 ; START OF FUNCTION CHUNK FOR eepromWriteSingleByte ROM:0000BA62 ROM:0000BA62 common_epologue: ; CODE XREF: calcPacketCrc+42j ROM:0000BA62 ; sendPacket:loc_7EEj ... ROM:0000BA62 pop.l er2 ; pop {er2, er3, er4, er5, er6} ROM:0000BA66 pop.l er3 ROM:0000BA6A pop.l er4 ROM:0000BA6E pop.l er5 ROM:0000BA72 pop.l er6 ROM:0000BA76 rts ROM:0000BA76 ; END OF FUNCTION CHUNK FOR eepromWriteSingleByte ROM:0000BA78 ROM:0000BA78 ; =============== S U B R O U T I N E ======================================= ROM:0000BA78 ROM:0000BA78 ROM:0000BA78 copy_data_zero_bss: ; CODE XREF: ENTRY+6p ROM:0000BA78 push.w r2 ROM:0000BA7A push.w r4 ROM:0000BA7C push.w r5 ROM:0000BA7E push.w r6 ROM:0000BA80 mov.w #zero_init_list_start, r0 ROM:0000BA84 mov.w #zero_init_list_end, r1 ROM:0000BA88 mov.b #0, r2l ROM:0000BA8A bra loc_BA98:8 ROM:0000BA8C ; --------------------------------------------------------------------------- ROM:0000BA8C ROM:0000BA8C loc_BA8C: ; CODE XREF: copy_data_zero_bss+22j ROM:0000BA8C mov.w @er0+, r4 ROM:0000BA8E mov.w @er0+, r5 ROM:0000BA90 bra loc_BA94:8 ROM:0000BA92 ; --------------------------------------------------------------------------- ROM:0000BA92 ROM:0000BA92 loc_BA92: ; CODE XREF: copy_data_zero_bss+1Ej ROM:0000BA92 mov.b r2l, @-er5 ROM:0000BA94 ROM:0000BA94 loc_BA94: ; CODE XREF: copy_data_zero_bss+18j ROM:0000BA94 cmp.w r5, r4 ROM:0000BA96 bcs loc_BA92:8 ROM:0000BA98 ROM:0000BA98 loc_BA98: ; CODE XREF: copy_data_zero_bss+12j ROM:0000BA98 cmp.w r1, r0 ROM:0000BA9A bcs loc_BA8C:8 ROM:0000BA9C mov.w #data_copy_list_start, r0 ROM:0000BAA0 mov.w #0xBFC0, r1 ROM:0000BAA4 bra loc_BAB8:8 ROM:0000BAA6 ; --------------------------------------------------------------------------- ROM:0000BAA6 ROM:0000BAA6 loc_BAA6: ; CODE XREF: copy_data_zero_bss+42j ROM:0000BAA6 mov.w @er0+, r4 ; 0xBFC4 ROM:0000BAA8 mov.w @er0+, r5 ; 0xBFC8 ROM:0000BAAA mov.w @er0+, r6 ; 0xFEF0 ROM:0000BAAC bra loc_BAB4:8 ROM:0000BAAE ; --------------------------------------------------------------------------- ROM:0000BAAE ROM:0000BAAE loc_BAAE: ; CODE XREF: copy_data_zero_bss+3Ej ROM:0000BAAE mov.b @er4+, r2l ROM:0000BAB0 mov.b r2l, @er6 ROM:0000BAB2 adds #1, er6 ROM:0000BAB4 ROM:0000BAB4 loc_BAB4: ; CODE XREF: copy_data_zero_bss+34j ROM:0000BAB4 cmp.w r5, r4 ROM:0000BAB6 bcs loc_BAAE:8 ROM:0000BAB8 ROM:0000BAB8 loc_BAB8: ; CODE XREF: copy_data_zero_bss+2Cj ROM:0000BAB8 cmp.w r1, r0 ROM:0000BABA bcs loc_BAA6:8 ROM:0000BABC pop.w r6 ROM:0000BABE pop.w r5 ROM:0000BAC0 pop.w r4 ROM:0000BAC2 pop.w r2 ROM:0000BAC4 rts ROM:0000BAC4 ; End of function copy_data_zero_bss ROM:0000BAC4 ROM:0000BAC4 ; --------------------------------------------------------------------------- ROM:0000BAC6 JUMPTABLE_2C8E: .word case_0x00_ ; DATA XREF: interactionHandlerPokeBattle+2Ct ROM:0000BAC6 ; 0x2C8e ROM:0000BAC8 .word case_0x01_ ROM:0000BACA .word case_0x02_ ROM:0000BACC .word case_0x03_ ROM:0000BACE .word case_0x04_ ROM:0000BAD0 .word case_0x05_ ROM:0000BAD2 .word case_0x06_ ROM:0000BAD4 .word case_0x07_ ROM:0000BAD6 .word case_0x08_ ROM:0000BAD8 .word case_0x09_ ROM:0000BADA .word case_0x0a_ ROM:0000BADC .word case_0x0b_ ROM:0000BADE .word case_0x0c_ ROM:0000BAE0 .word case_0x0d_ ROM:0000BAE2 .word case_0x0e_ ROM:0000BAE4 .word case_0x0f_ ROM:0000BAE6 .word case_0x10_ ROM:0000BAE8 .word case_0x11_ ROM:0000BAEA JUMPTABLE_3292: .word battle_view_case_0 ; DATA XREF: battleScreenDraw+1ECt ROM:0000BAEC .word battle_view_case_1 ROM:0000BAEE .word battle_view_case_2 ROM:0000BAF0 .word battle_view_case_3 ROM:0000BAF2 .word battle_view_case_4 ROM:0000BAF4 .word battle_view_case_5 ROM:0000BAF6 .word battle_view_case_6 ROM:0000BAF8 .word battle_view_case_7 ROM:0000BAFA .word battle_view_case_8 ROM:0000BAFC .word battle_view_case_9 ROM:0000BAFE .word battle_view_case_10 ROM:0000BB00 .word battle_view_case_11 ROM:0000BB02 .word battle_view_case_12 ROM:0000BB04 .word battle_view_case_13 ROM:0000BB06 .word battle_view_case_14 ROM:0000BB08 .word battle_view_case_15 ROM:0000BB0A .word battle_view_case_16 ROM:0000BB0C .word battle_view_case_17 ROM:0000BB0E byte_BB0E: .byte -0x10 ; DATA XREF: interactionHandlerPokeBattle+42t ROM:0000BB0E ; interactionHandlerPokeBattle+2BCt ROM:0000BB0F .byte -4 ROM:0000BB10 .byte 8 ROM:0000BB11 .byte 8 ROM:0000BB12 byte_BB12: .byte 0x38 ; DATA XREF: interactionHandlerPokeBattle+80t ROM:0000BB13 byte_BB13: .byte 8 ; DATA XREF: interactionHandlerPokeBattle+90t ROM:0000BB14 .byte 0x38 ROM:0000BB15 .byte 8 ROM:0000BB16 .byte 0x36 ROM:0000BB17 .byte 8 ROM:0000BB18 .byte 0x34 ROM:0000BB19 .byte 8 ROM:0000BB1A .byte 0x35 ROM:0000BB1B .byte 0 ROM:0000BB1C .byte 0x36 ROM:0000BB1D .byte 0 ROM:0000BB1E .byte 0x37 ROM:0000BB1F .byte 4 ROM:0000BB20 .byte 0x38 ROM:0000BB21 .byte 8 ROM:0000BB22 .byte 0x38 ROM:0000BB23 .byte 8 ROM:0000BB24 byte_BB24: .byte 0x38 ; DATA XREF: interactionHandlerPokeBattle+13Et ROM:0000BB25 byte_BB25: .byte 8 ; DATA XREF: interactionHandlerPokeBattle+14Et ROM:0000BB26 .byte 0x38 ROM:0000BB27 .byte 8 ROM:0000BB28 .byte 0x38 ROM:0000BB29 .byte 0xA ROM:0000BB2A .byte 0x38 ROM:0000BB2B .byte 0xC ROM:0000BB2C .byte 0x40 ROM:0000BB2D .byte 0xC ROM:0000BB2E .byte 0x40 ROM:0000BB2F .byte 0xB ROM:0000BB30 .byte 0x40 ROM:0000BB31 .byte 0xA ROM:0000BB32 .byte 0x3C ROM:0000BB33 .byte 9 ROM:0000BB34 .byte 0x38 ROM:0000BB35 .byte 8 ROM:0000BB36 .byte 0x2D ; - ROM:0000BB37 .byte 0x23 ; # ROM:0000BB38 .byte 0x14 ROM:0000BB39 .byte 0x28 ; ( ROM:0000BB3A .byte 0x1E ROM:0000BB3B .byte 0x1E ROM:0000BB3C .byte 0x32 ; 2 ROM:0000BB3D .byte 0x28 ; ( ROM:0000BB3E .byte 0xA ROM:0000BB3F .byte 0x3C ; < ROM:0000BB40 .byte 0x1E ROM:0000BB41 .byte 0xA ROM:0000BB42 .byte 0x14 ROM:0000BB43 .byte 0x1E ROM:0000BB44 .byte 0x32 ; 2 ROM:0000BB45 byte_BB45: .byte 0x61 ; DATA XREF: sub_2C32+20t ROM:0000BB46 .byte 0x4F ROM:0000BB47 .byte 0x42 ROM:0000BB48 .byte 0x38 ROM:0000BB49 .byte 0 ROM:0000BB4A FREQTAB: .byte 0xF4,0xE6,0xD9,0xCD,0xC2,0xB7,0xAC,0xA3,0x9A,0x91,0x89,0x81,0x7A,0x73,0x6C,0x66 ROM:0000BB4A ; DATA XREF: timer_w_irq+1AAt ROM:0000BB4A .byte 0x61,0x5B,0x56,0x51,0x4D,0x48,0x44,0x40,0x3D,0x39,0x36,0x33,0x30,0x2D,0x2B,0x28 ROM:0000BB4A .byte 0x26,0x24,0x22,0x20,0x1E,0x1C,0x1A,0x19,0x17,0x16 ROM:0000BB74 POKEWALKER_LARGE_IMAGE:.byte 0, 0, 0, 0, 0, 0,0x80,0x80,0xC0,0xC0,0xE0,0x60,0xF0,0x30,0xF8,0x18,0xF8, 8,0xFC, 0xC,0xFC, 4,0xFC, 4,0xFE, 6,0xFE, 2,0xFE, 2,0xFE, 2 ROM:0000BB74 ; DATA XREF: drawPokewalkerInitialConnectionInstructionScreen+Eo ROM:0000BB74 ; drawHappyPokewalkerWithActiveConnectivityAnimation:loc_71C8o ROM:0000BB74 .byte 0xFE, 2,0xFE, 2,0xFE, 2,0xFE, 6,0xFC, 4,0xFC, 4,0xFC, 0xC,0xF8, 8,0xF8,0x18,0xF0,0x30,0xE0,0x60,0xC0,0xC0,0x80,0x80, 0, 0, 0, 0, 0, 0 ; 32x32 ROM:0000BB74 .byte 0, 0,0xF0,0xF0,0xFE,0x9E,0xFF,0x83,0xFF,0x80,0xFF,0x80,0xFF,0xFC, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2 ROM:0000BB74 .byte 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2,0xFF,0xFC,0xFF,0x80,0xFF,0x80,0xFF,0x83,0xFE,0x9E,0xF0,0xF0, 0, 0 ROM:0000BB74 .byte 0, 0, 0xF, 0xF,0x79,0x75,0xC1,0xA1, 1,0x81, 1, 1, 0xF, 0xF,0x90,0x90,0xD0,0xD0,0xD0,0xD0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0x90 ROM:0000BB74 .byte 0x90,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xD0,0xD0,0xD0,0xD0,0x90,0x90, 0xF, 0xF, 1, 1, 1,0x81,0xC1,0xA1,0x79,0x75, 0xF, 0xF, 0, 0 ROM:0000BB74 .byte 0, 0, 0, 0, 0, 0, 1, 1, 3, 2, 6, 4, 0xC, 8,0x19,0x11,0x13,0x13,0x33,0x23,0x20,0x30,0x20,0x20,0x60,0x40,0x40,0x60,0x43,0x43,0x47,0x47 ROM:0000BB74 .byte 0x47,0x47,0x43,0x43,0x40,0x60,0x60,0x40,0x20,0x20,0x20,0x30,0x33,0x23,0x13,0x13,0x19,0x11, 0xC, 8, 6, 4, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0 ROM:0000BC74 POKEWALKER_NEUTRAL_FACE_IMAGE:.byte 0, 0, 0, 0, 0, 0, 0, 0, 0xC, 0xC, 0, 0,0x40,0x40,0x40,0x40 ROM:0000BC74 ; DATA XREF: drawPokewalkerInitialConnectionInstructionScreen+28o ROM:0000BC74 .byte 0x40,0x40,0x40,0x40, 0, 0, 0xC, 0xC, 0, 0, 0, 0, 0, 0, 0, 0 ; 16x8 :| ROM:0000BC94 POKEWALKER_HAPPY_FACE_IMAGE:.byte 0, 0, 0, 0, 0, 0, 0, 0, 0xC, 0xC,0x20,0x20,0x60,0x60,0x60,0x60 ROM:0000BC94 ; DATA XREF: drawHappyPokewalkerWithActiveConnectivityAnimation+3Eo ROM:0000BC94 .byte 0x60,0x60,0x60,0x60,0x20,0x20, 0xC, 0xC, 0, 0, 0, 0, 0, 0, 0, 0 ; 16x8 :) ROM:0000BCB4 POKEWALKER_SAD_FACE_IMAGE:.byte 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,0x44,0x44,0x20,0x20,0x10,0x10 ROM:0000BCB4 ; DATA XREF: drawSadPokewalkerImage+28o ROM:0000BCB4 .byte 0x10,0x10,0x20,0x20,0x44,0x44, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0 ; 16x8 :( ROM:0000BCD4 POKEWALKER_UP_ARROW_ICON:.byte 8, 8, 0xC, 0xC,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E, 0xC, 0xC, 8, 8 ROM:0000BCD4 ; DATA XREF: drawPokewalkerInitialConnectionInstructionScreen+70o ROM:0000BCD4 ; 8x8 up arrow for "press here" ROM:0000BCE4 POKEWALKER_IR_ACTIVE_ICON:.byte 0, 0, 2, 2,0x11,0x11,0x89,0x89,0x89,0x89,0x11,0x11, 2, 2, 0, 0 ROM:0000BCE4 ; DATA XREF: drawHappyPokewalkerWithActiveConnectivityAnimation+14o ROM:0000BCE4 ; wifi-like icon for "ir active" 8x8 ROM:0000BCF4 TINY_CHARS: .byte 0b11100 ; DATA XREF: drawTinyChars+10Et ROM:0000BCF4 ; drawTinyChars+128t ... ROM:0000BCF4 .byte 0b100010 ; lsb is top pixel. 3-px wide chars. 1bpp ROM:0000BCF4 .byte 0b11100 ROM:0000BCF4 .byte 0b100100 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100000 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b101110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b1000 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b101110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b10 ROM:0000BCF4 .byte 0b10 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111100 ROM:0000BCF4 .byte 0b10110 ROM:0000BCF4 .byte 0b111100 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b10100 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b110110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b11100 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1000 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b10 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1000 ROM:0000BCF4 .byte 0b110110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100000 ROM:0000BCF4 .byte 0b100000 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1100 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b11000 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b100010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b1010 ROM:0000BCF4 .byte 0b111100 ROM:0000BCF4 .byte 0b101110 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b10 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b10 ROM:0000BCF4 .byte 0b11110 ROM:0000BCF4 .byte 0b100000 ROM:0000BCF4 .byte 0b11110 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b110000 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b11000 ROM:0000BCF4 .byte 0b111110 ROM:0000BCF4 .byte 0b110110 ROM:0000BCF4 .byte 0b1000 ROM:0000BCF4 .byte 0b110110 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b111000 ROM:0000BCF4 .byte 0b1110 ROM:0000BCF4 .byte 0b111010 ROM:0000BCF4 .byte 0b101010 ROM:0000BCF4 .byte 0b101110 ROM:0000BD60 JUMPTABLE_3FF6: .word _case_0 ; DATA XREF: drawItemMapStampOrRouteReceived+30t ROM:0000BD62 .word _case_1 ROM:0000BD64 .word _case_2 ROM:0000BD66 .word _case_3 ROM:0000BD68 .word _case_4 ROM:0000BD6A .word _case_5 ROM:0000BD6C .word _case_6 ROM:0000BD6E .word _case_7 ROM:0000BD70 BALL_DROP_Y_COORD:.byte 0, 2, 6, 12, 20, 16 ROM:0000BD70 ; DATA XREF: drawBallFropFromTopOfScreen+3At ROM:0000BD76 item_screen_locs:.byte 0x24 ; DATA XREF: drawPokeballInMiddleOfScreen+4Ao ROM:0000BD77 .byte 0x16 ROM:0000BD78 .byte 0x34 ; 4 ROM:0000BD79 .byte 0x10 ROM:0000BD7A .byte 0x2A ; * ROM:0000BD7B .byte 8 ROM:0000BD7C GOING_AWAY_ANIMATION_Y_COORDS:.byte 20, 18, 14, 8, 0 ROM:0000BD7C ; DATA XREF: drawMovingBlankIconWithBarsOnTopAndBottom+34t ROM:0000BD81 .byte 0 ROM:0000BD82 unk_BD82: .byte 2 ; DATA XREF: dowsingStartHandleLikely+108t ROM:0000BD83 .byte -2 ROM:0000BD84 UNKNOWN_WORDS_BD84:.byte 2 ; DATA XREF: addRandomGift+10t ROM:0000BD85 .byte -2 ROM:0000BD86 .word unk_BD94 ROM:0000BD88 .word unk_BDA0 ROM:0000BD8A .word unk_BDAC ROM:0000BD8C .word unk_BDB8 ROM:0000BD8E .word unk_BDC4 ROM:0000BD90 .word 0 ROM:0000BD92 .word unk_BDC8 ROM:0000BD94 unk_BD94: .byte 0xA ; DATA XREF: ROM:0000BD86o ROM:0000BD95 .byte 0x10 ROM:0000BD96 .byte 0xFC ; n ROM:0000BD97 .byte 0x32 ; 2 ROM:0000BD98 .byte 0xEA ; O ROM:0000BD99 .byte 0x10 ROM:0000BD9A .byte 0xFF ROM:0000BD9B .byte 0x3F ; ? ROM:0000BD9C .byte 0xEF ; n ROM:0000BD9D .byte 5 ROM:0000BD9E .byte 0xFD ; ² ROM:0000BD9F .byte 0x18 ROM:0000BDA0 unk_BDA0: .byte 0x3A ; : ; DATA XREF: ROM:0000BD88o ROM:0000BDA1 .byte 0x10 ROM:0000BDA2 .byte 0xFC ; n ROM:0000BDA3 .byte 0x33 ; 3 ROM:0000BDA4 .byte 0xEA ; O ROM:0000BDA5 .byte 0x10 ROM:0000BDA6 .byte 0xFF ROM:0000BDA7 .byte 0x3F ; ? ROM:0000BDA8 .byte 0xEF ; n ROM:0000BDA9 .byte 5 ROM:0000BDAA .byte 0xFE ; ¦ ROM:0000BDAB .byte 0x18 ROM:0000BDAC unk_BDAC: .byte 0x5A ; Z ; DATA XREF: ROM:0000BD8Ao ROM:0000BDAD .byte 0x10 ROM:0000BDAE .byte 0xFC ; n ROM:0000BDAF .byte 0x34 ; 4 ROM:0000BDB0 .byte 0xEA ; O ROM:0000BDB1 .byte 0x10 ROM:0000BDB2 .byte 0xFF ROM:0000BDB3 .byte 0x3F ; ? ROM:0000BDB4 .byte 0xEF ; n ROM:0000BDB5 .byte 5 ROM:0000BDB6 .byte 0xFE ; ¦ ROM:0000BDB7 .byte 0x18 ROM:0000BDB8 unk_BDB8: .byte 0x7A ; z ; DATA XREF: ROM:0000BD8Co ROM:0000BDB9 .byte 0x10 ROM:0000BDBA .byte 0xFC ; n ROM:0000BDBB .byte 0x39 ; 9 ROM:0000BDBC .byte 0xEA ; O ROM:0000BDBD .byte 0x10 ROM:0000BDBE .byte 0xFF ROM:0000BDBF .byte 0x3F ; ? ROM:0000BDC0 .byte 0xEF ; n ROM:0000BDC1 .byte 5 ROM:0000BDC2 .byte 0xFE ; ¦ ROM:0000BDC3 .byte 0x18 ROM:0000BDC4 unk_BDC4: .byte 0x9B ; ¢ ; DATA XREF: ROM:0000BD8Eo ROM:0000BDC5 .byte 0x10 ROM:0000BDC6 .byte 0xFC ; n ROM:0000BDC7 .byte 0x3C ; < ROM:0000BDC8 unk_BDC8: .byte 0xE8 ; F ; DATA XREF: ROM:0000BD92o ROM:0000BDC9 .byte 0x10 ROM:0000BDCA .byte 0xFF ROM:0000BDCB .byte 0x40 ; @ ROM:0000BDCC .byte 0xCB ; - ROM:0000BDCD .byte 7 ROM:0000BDCE .byte 0xFC ; n ROM:0000BDCF .byte 0x41 ; A ROM:0000BDD0 POKEBALL_THROW_ARC_Y:.word 0, 201, 400, 595, 784, 965,1138,1299,1448,1583,1703,1806,1892,1960,2009,2038 ROM:0000BDD0 ; DATA XREF: battleScreenDraw+172t ROM:0000BDD0 ; processAcceleromerSamplesAxis+D6t ... ROM:0000BDD0 .word 2048,2038,2009,1960,1892,1806,1703,1583,1448,1299,1138, 965, 784, 595, 400, 201 ROM:0000BDD0 .word 0,-201,-400,-595,-784,-965,-1138,-1299,-1448,-1583,-1703,-1806,-1892,-1960,-2009,-2038 ROM:0000BDD0 .word -2048,-2038,-2009,-1960,-1892,-1806,-1703,-1583,-1448,-1299,-1138,-965,-784,-595,-400,-201 ROM:0000BDD0 .word 0, 201, 400, 595, 784, 965,1138,1299,1448,1583,1703,1806,1892,1960,2009,2038 ROM:0000BE70 PEER_PLAY_MUSIC_NOTE_VERTICAL_MOVE_AMT:.byte 0 ; DATA XREF: drawPeerPlay+C8t ROM:0000BE70 ; drawPeerPlay+F4t ... ROM:0000BE71 byte_BE71: .byte 1, 2, 1 ; DATA XREF: drawPeerPlay+11Ct ROM:0000BE71 ; drawPeerPlay+144t ... ROM:0000BE74 .byte 0 ROM:0000BE75 .byte 0 ROM:0000BE76 JUMPTABLE_OFFSETS_72C6:.byte 0 ; DATA XREF: showCommsErrorMessage+3Ct ROM:0000BE77 .byte 0xA ROM:0000BE78 .byte 0x14 ROM:0000BE79 .byte 0x64 ROM:0000BE7A .byte 0x28 ROM:0000BE7B .byte 0x3C ROM:0000BE7C .byte 0x50 ROM:0000BE7D .byte 0xA ROM:0000BE7E JUMPTABLE_OFFSETS_735C:.byte 0 ; DATA XREF: interactionHandler+14t ROM:0000BE7F .byte 0x16 ROM:0000BE80 .byte 0x1C ROM:0000BE81 .byte 0x22 ROM:0000BE82 .byte 0x28 ROM:0000BE83 .byte 0x92 ROM:0000BE84 .byte 0x2E ROM:0000BE85 .byte 0x34 ROM:0000BE86 .byte 0x3A ROM:0000BE87 .byte 0x46 ROM:0000BE88 .byte 0x40 ROM:0000BE89 .byte 0x4C ROM:0000BE8A .byte 8 ROM:0000BE8B .byte 0x10 ROM:0000BE8C .byte 0x52 ROM:0000BE8D .byte 0x76 ROM:0000BE8E .byte 0x7C ROM:0000BE8F .byte 0x82 ROM:0000BE90 .byte 0x92 ROM:0000BE91 .byte 0x92 ROM:0000BE92 .byte 0x92 ROM:0000BE93 .byte 0x92 ROM:0000BE94 .byte 0x88 ROM:0000BE95 .byte 0x8E ROM:0000BE96 JUMPTABLE_OFFSETS_7416:.byte 0 ; DATA XREF: maybe_viewDoDisplay+10t ROM:0000BE97 .byte 0x26 ROM:0000BE98 .byte 0x2C ROM:0000BE99 .byte 0x32 ROM:0000BE9A .byte 0x38 ROM:0000BE9B .byte 0x98 ROM:0000BE9C .byte 0x3E ROM:0000BE9D .byte 0x44 ROM:0000BE9E .byte 0x4A ROM:0000BE9F .byte 0x56 ROM:0000BEA0 .byte 0x50 ROM:0000BEA1 .byte 0x5C ROM:0000BEA2 .byte 0x1A ROM:0000BEA3 .byte 0x20 ROM:0000BEA4 .byte 0x62 ROM:0000BEA5 .byte 0x76 ROM:0000BEA6 .byte 0x7C ROM:0000BEA7 .byte 0x82 ROM:0000BEA8 .byte 0x98 ROM:0000BEA9 .byte 0x98 ROM:0000BEAA .byte 0x98 ROM:0000BEAB .byte 0x98 ROM:0000BEAC .byte 0x88 ROM:0000BEAD .byte 0x8E ROM:0000BEAE .byte 0x94 ROM:0000BEAF .byte 0 ROM:0000BEB0 INDEX_TO_FEELING_IMAGE_MAP:.byte 0, 1, 2, 3, 4, 5 ROM:0000BEB0 ; DATA XREF: drawHomeScreenMain+Et ROM:0000BEB6 .byte 6 ROM:0000BEB7 .byte 5 ROM:0000BEB8 ROM_LCD_INIT_COMMANDS:.byte 0x14 ; DATA XREF: initLcdUsingRomOrEepromCommands:loc_7BACo ROM:0000BEB8 ; initial contrast - 0x14 ROM:0000BEB9 .byte 0x48 ; set multiplex ratio ROM:0000BEBA .byte 0x40 ; set start line to 0 ROM:0000BEBB .byte 0xA0 ; segment remap ROM:0000BEBC .byte 0xC0 ; COM scan direction ROM:0000BEBD .byte 0x44 ; display offset ROM:0000BEBE .byte 0x20 ; configre internal regulator resistors ROM:0000BEBF .byte 0xAB ; start internal oscillator ROM:0000BEC0 .byte 0x67 ; set internal dc-dc conversion factor ROM:0000BEC1 .byte 0x25 ; configre internal regulator resistors again ROM:0000BEC2 .byte 0x81 ; set contrast contorl register ROM:0000BEC3 .byte 0x18 ; the value ROM:0000BEC4 .byte 0x52 ; set lcd bias ROM:0000BEC5 .byte 0x95 ; ??? ROM:0000BEC6 .byte 0x88 ; greyscale config reg 0 ROM:0000BEC7 .byte 0 ; value ROM:0000BEC8 .byte 0x89 ; greyscale config reg 1 ROM:0000BEC9 .byte 0 ; value ROM:0000BECA .byte 0x8A ; greyscale config reg 2 ROM:0000BECB .byte 0x55 ; value ROM:0000BECC .byte 0x8B ; greyscale config reg 3 ROM:0000BECD .byte 0x55 ; value ROM:0000BECE .byte 0x8C ; greyscale config reg 4 ROM:0000BECF .byte 0x77 ; value ROM:0000BED0 .byte 0x8D ; greyscale config reg 5 ROM:0000BED1 .byte 0x77 ; value ROM:0000BED2 .byte 0x8E ; greyscale config reg 6 ROM:0000BED3 .byte 0x99 ; value ROM:0000BED4 .byte 0x8F ; greyscale config reg 7 ROM:0000BED5 .byte 0x99 ; value ROM:0000BED6 .byte 0x4C ; set n line inversion ROM:0000BED7 .byte 4 ; data ROM:0000BED8 .byte 0xF1 ; unknown command? ROM:0000BED9 .byte 0 ; data ROM:0000BEDA .byte 0xF7 ; unknown command? ROM:0000BEDB .byte 2 ; data ROM:0000BEDC .byte 0xF6 ; unknown command? ROM:0000BEDD .byte 0xA ; data ROM:0000BEDE .byte 0x2F ; set power control to on ROM:0000BEDF .byte 0xFD ; delay ROM:0000BEE0 .byte 1 ; delay len ROM:0000BEE1 .byte 0x40 ; set display start line ROM:0000BEE2 .byte 0 ; set lower column addr ROM:0000BEE3 .byte 0xFE ; lcd config done ROM:0000BEE4 JUMPTABLE_8DCE: .word case___0 ; DATA XREF: drawPokemonAndItemsScreen+46t ROM:0000BEE6 .word case___1_2_3 ROM:0000BEE8 .word case___1_2_3 ROM:0000BEEA .word case___1_2_3 ROM:0000BEEC .word case___4 ROM:0000BEEE .word case___5 ROM:0000BEF0 .word case___6_7_8 ROM:0000BEF2 .word case___6_7_8 ROM:0000BEF4 .word case___6_7_8 ROM:0000BEF6 .word case___9 ROM:0000BEF8 unk_BEF8: .byte 3 ; DATA XREF: sub_9698+30o ROM:0000BEF9 .byte 2 ROM:0000BEFA .byte 4 ROM:0000BEFB .byte 1 ROM:0000BEFC .byte 5 ROM:0000BEFD .byte 0 ROM:0000BEFE .byte 6 ROM:0000BEFF .byte 7 ROM:0000BF00 .byte 8 ROM:0000BF01 .byte 9 ROM:0000BF02 JUMPTABLE_97AC: .word case__0 ; DATA XREF: interactionHAndlerMainMenu+56t ROM:0000BF04 .word case__1 ROM:0000BF06 .word case__2 ROM:0000BF08 .word case__3 ROM:0000BF0A .word case__4 ROM:0000BF0C .word case__5 ROM:0000BF0E ACTIVITY_WATT_COSTS:.byte 10, 3, 0, 0, 0, 0 ROM:0000BF0E ; DATA XREF: interactionHAndlerMainMenu+2Eo ROM:0000BF14 MAIN_MENU_ITEM_POSITIONS_Y_RELATIVE:.byte 8, 11, 13, 13, 11, 8 ROM:0000BF14 ; DATA XREF: mainMenuDraw+96t ROM:0000BF14 ; mainMenuDraw+D0t ROM:0000BF14 ; not from very top of screen ROM:0000BF1A byte_BF1A: .byte 0x40,0x30,0x20,0x18 ROM:0000BF1A ; DATA XREF: goToPokeRadarMicroApp+1Ct ROM:0000BF1A ; interactionHandlerPokeRadar+B8t ROM:0000BF1E byte_BF1E: .byte 0x10 ; DATA XREF: interactionHandlerPokeRadar+A0t ROM:0000BF1F .byte 0x20 ROM:0000BF20 .byte 0x30 ; 0 ROM:0000BF21 byte_BF21: .byte 0 ; DATA XREF: pokeRadarDraw+186t ROM:0000BF22 .byte 0 ROM:0000BF23 .byte 1 ROM:0000BF24 .byte 2 ROM:0000BF25 BUSH_X_COORDINATES_IN_POKERADAR:.byte 8 ; DATA XREF: pokeRadarDraw+4Ct ROM:0000BF25 ; pokeRadarDraw+84t ... ROM:0000BF25 ; bush order is top to bottom, LTR ROM:0000BF26 .byte 0x10 ROM:0000BF27 .byte 0x38 ROM:0000BF28 .byte 0x40 ROM:0000BF29 .byte 0 ROM:0000BF2A JUMPTABLE_AA8A: .word loc_AA90 ; DATA XREF: interactionHandlerDebugMode22+1Et ROM:0000BF2C .word loc_AAA6 ROM:0000BF2E .word loc_AAA6 ROM:0000BF30 .word loc_AAA6 ROM:0000BF32 .word loc_AAA6 ROM:0000BF34 .word loc_AAA6 ROM:0000BF36 .word loc_AAA6 ROM:0000BF38 .word loc_AAE0 ROM:0000BF3A .word loc_AAF0 ROM:0000BF3C .word loc_AB00 ROM:0000BF3E .word loc_AB10 ROM:0000BF40 .word loc_AB1A ROM:0000BF42 .word loc_AB5C ROM:0000BF44 .word loc_AB6C ROM:0000BF46 .word loc_AB94 ROM:0000BF48 .word loc_ABA2 ROM:0000BF4A .word loc_ABB0 ROM:0000BF4C .word loc_ABBA ROM:0000BF4E .word loc_ABDA ROM:0000BF50 JUMPTABLE_AD1C: .word loc_AD22 ; DATA XREF: drawSomethingWithTinyChars+16t ROM:0000BF52 .word loc_AD6E ROM:0000BF54 .word loc_AD72 ROM:0000BF56 .word loc_AD76 ROM:0000BF58 .word loc_AD7A ROM:0000BF5A .word loc_AD84 ROM:0000BF5C .word loc_AD8C ROM:0000BF5E .word loc_AD94 ROM:0000BF60 .word loc_ADAE ROM:0000BF62 .word loc_ADC8 ROM:0000BF64 .word loc_AD32 ROM:0000BF66 .word loc_AD32 ROM:0000BF68 .word loc_AD3A ROM:0000BF6A .word loc_AEA8 ROM:0000BF6C .word loc_AD4A ROM:0000BF6E .word loc_AD5A ROM:0000BF70 .word loc_AEA8 ROM:0000BF72 .word loc_ADDE ROM:0000BF74 .word loc_ADF2 ROM:0000BF76 aNg1: .ascii "NG1"<0> ; DATA XREF: drawSomethingWithTinyChars+24o ROM:0000BF7A aEep: .ascii "EEP"<0> ; DATA XREF: drawSomethingWithTinyChars:loc_AD32o ROM:0000BF7E aNg2: .ascii "NG2"<0> ; DATA XREF: drawSomethingWithTinyChars+3Co ROM:0000BF82 aNg3: .ascii "NG3"<0> ; DATA XREF: drawSomethingWithTinyChars+4Co ROM:0000BF86 aNg4: .ascii "NG4"<0> ; DATA XREF: drawSomethingWithTinyChars+62o ROM:0000BF8A aV: .ascii "V"<0> ; DATA XREF: drawSomethingWithTinyChars+9Co ROM:0000BF8A ; drawSomethingWithTinyChars+B6o ... ROM:0000BF8C aNg5: .ascii "NG5"<0> ; DATA XREF: drawSomethingWithTinyChars+E0o ROM:0000BF90 aOk: .ascii "OK"<0> ; DATA XREF: drawSomethingWithTinyChars+10Eo ROM:0000BF90 ; drawSomethingWithTinyChars2+198o ROM:0000BF93 aNg6: .ascii "NG6"<0> ; DATA XREF: drawNG6inTinyCharso ROM:0000BF97 .byte 0 ROM:0000BF98 DATA_FOR_EEPROM_0x0000:.ascii "nintendo" ROM:0000BF98 ; DATA XREF: writeNintendoStringToFlash+8t ROM:0000BF98 ; checkForNintendoStringInFlash+12t ROM:0000BFA0 .word 0 ROM:0000BFA2 DATA_FOR_EEPROM_0x8cf0:.byte 0x64, 0x7B, 3, 0x28, 6, 0x26, 0x60, 0x7F ROM:0000BFAA str_0123456789abcdef:.ascii "0123456789ABCDEF" ROM:0000BFAA ; DATA XREF: drawSomethingWithTinyChars+130t ROM:0000BFAA ; drawSomethingWithTinyChars+140t ... ROM:0000BFBA data_copy_list_start:.word 0xBFC4 ; DATA XREF: copy_data_zero_bss+24o ROM:0000BFBA ; src_start, src_end, dst_start ROM:0000BFBC .word 0xBFC8 ROM:0000BFBE .word 0xFEF0 ROM:0000BFC0 zero_init_list_start:.word 0xF780 ; DATA XREF: copy_data_zero_bss+8o ROM:0000BFC0 ; from, to... ROM:0000BFC2 .word 0xFEF0 ROM:0000BFC4 zero_init_list_end:.word 0 ; DATA XREF: copy_data_zero_bss+Co ROM:0000BFC6 .word 0 ROM:0000BFC8 unused_flash: .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ROM:0000BFC8 .byte 0xFF, 0xFF ROM:0000BFC8 IO1_high:00FFF020 ; =========================================================================== IO1_high:00FFF020 IO1_high:00FFF020 ; Segment type: Regular IO1_high:00FFF020 .data; IO1_high IO1_high:00FFF020 .space 1 IO1_high:00FFF021 .space 1 IO1_high:00FFF022 .space 1 IO1_high:00FFF023 .space 1 IO1_high:00FFF024 .space 1 IO1_high:00FFF025 .space 1 IO1_high:00FFF026 .space 1 IO1_high:00FFF027 .space 1 IO1_high:00FFF028 .space 1 IO1_high:00FFF029 .space 1 IO1_high:00FFF02A .space 1 IO1_high:00FFF02B .space 1 IO1_high:00FFF02C .space 1 IO1_high:00FFF02D .space 1 IO1_high:00FFF02E .space 1 IO1_high:00FFF02F .space 1 IO1_high:00FFF030 .space 1 IO1_high:00FFF031 .space 1 IO1_high:00FFF032 .space 1 IO1_high:00FFF033 .space 1 IO1_high:00FFF034 .space 1 IO1_high:00FFF035 .space 1 IO1_high:00FFF036 .space 1 IO1_high:00FFF037 .space 1 IO1_high:00FFF038 .space 1 IO1_high:00FFF039 .space 1 IO1_high:00FFF03A .space 1 IO1_high:00FFF03B .space 1 IO1_high:00FFF03C .space 1 IO1_high:00FFF03D .space 1 IO1_high:00FFF03E .space 1 IO1_high:00FFF03F .space 1 IO1_high:00FFF040 .space 1 IO1_high:00FFF041 .space 1 IO1_high:00FFF042 .space 1 IO1_high:00FFF043 .space 1 IO1_high:00FFF044 .space 1 IO1_high:00FFF045 .space 1 IO1_high:00FFF046 .space 1 IO1_high:00FFF047 .space 1 IO1_high:00FFF048 .space 1 IO1_high:00FFF049 .space 1 IO1_high:00FFF04A .space 1 IO1_high:00FFF04B .space 1 IO1_high:00FFF04C .space 1 IO1_high:00FFF04D .space 1 IO1_high:00FFF04E .space 1 IO1_high:00FFF04F .space 1 IO1_high:00FFF050 .space 1 IO1_high:00FFF051 .space 1 IO1_high:00FFF052 .space 1 IO1_high:00FFF053 .space 1 IO1_high:00FFF054 .space 1 IO1_high:00FFF055 .space 1 IO1_high:00FFF056 .space 1 IO1_high:00FFF057 .space 1 IO1_high:00FFF058 .space 1 IO1_high:00FFF059 .space 1 IO1_high:00FFF05A .space 1 IO1_high:00FFF05B .space 1 IO1_high:00FFF05C .space 1 IO1_high:00FFF05D .space 1 IO1_high:00FFF05E .space 1 IO1_high:00FFF05F .space 1 IO1_high:00FFF060 .space 1 IO1_high:00FFF061 .space 1 IO1_high:00FFF062 .space 1 IO1_high:00FFF063 .space 1 IO1_high:00FFF064 .space 1 IO1_high:00FFF065 .space 1 IO1_high:00FFF066 .space 1 IO1_high:00FFF067 RTC_RTCFLG: .space 1 ; DATA XREF: VECTOR_RTC_QUARTER_SEC+At IO1_high:00FFF067 ; VECTOR_RTC_HALF_SEC+2t ... IO1_high:00FFF068 RTC_RSECDR: .space 1 ; DATA XREF: rtcSet+AEw IO1_high:00FFF068 ; rtcReadBcd:loc_A5E4r ... IO1_high:00FFF069 RTC_RMINDR: .space 1 ; DATA XREF: rtcSet+B2w IO1_high:00FFF069 ; rtcReadBcd:loc_A5F8r ... IO1_high:00FFF06A RTC_RHRDR: .space 1 ; DATA XREF: rtcSet+B6w IO1_high:00FFF06A ; rtcReadBcd:loc_A60Ar ... IO1_high:00FFF06B .space 1 IO1_high:00FFF06C RTC_RTCCR1: .space 1 ; DATA XREF: rtcSet+9Et IO1_high:00FFF06D RTC_RTCCR2: .space 1 ; DATA XREF: sub_A180+10t IO1_high:00FFF06D ; sub_A29C+30t ... IO1_high:00FFF06E .space 1 IO1_high:00FFF06F .space 1 IO1_high:00FFF070 .space 1 IO1_high:00FFF071 .space 1 IO1_high:00FFF072 .space 1 IO1_high:00FFF073 .space 1 IO1_high:00FFF074 .space 1 IO1_high:00FFF075 .space 1 IO1_high:00FFF076 .space 1 IO1_high:00FFF077 .space 1 IO1_high:00FFF078 .space 1 IO1_high:00FFF079 .space 1 IO1_high:00FFF07A .space 1 IO1_high:00FFF07B .space 1 IO1_high:00FFF07C .space 1 IO1_high:00FFF07D .space 1 IO1_high:00FFF07E .space 1 IO1_high:00FFF07F .space 1 IO1_high:00FFF080 .space 1 IO1_high:00FFF081 .space 1 IO1_high:00FFF082 .space 1 IO1_high:00FFF083 .space 1 IO1_high:00FFF084 .space 1 IO1_high:00FFF085 IO_PFCR: .space 1 ; DATA XREF: maybeConfigureKeys+14r IO1_high:00FFF085 ; maybeConfigureKeys+1Aw ... IO1_high:00FFF086 .space 1 IO1_high:00FFF087 IO_PUCR9: .space 1 ; DATA XREF: basicIoConfig+1Aw IO1_high:00FFF088 IO_UNKNOWN_REG: .space 1 ; DATA XREF: io_related_weirdness+2w IO1_high:00FFF089 .space 1 IO1_high:00FFF08A .space 1 IO1_high:00FFF08B .space 1 IO1_high:00FFF08C .space 1 IO1_high:00FFF08D .space 1 IO1_high:00FFF08E .space 1 IO1_high:00FFF08F .space 1 IO1_high:00FFF090 .space 1 IO1_high:00FFF091 .space 1 IO1_high:00FFF092 .space 1 IO1_high:00FFF093 .space 1 IO1_high:00FFF094 .space 1 IO1_high:00FFF095 .space 1 IO1_high:00FFF096 .space 1 IO1_high:00FFF097 .space 1 IO1_high:00FFF098 .space 1 IO1_high:00FFF099 .space 1 IO1_high:00FFF09A .space 1 IO1_high:00FFF09B .space 1 IO1_high:00FFF09C .space 1 IO1_high:00FFF09D .space 1 IO1_high:00FFF09E .space 1 IO1_high:00FFF09F .space 1 IO1_high:00FFF0A0 .space 1 IO1_high:00FFF0A1 .space 1 IO1_high:00FFF0A2 .space 1 IO1_high:00FFF0A3 .space 1 IO1_high:00FFF0A4 .space 1 IO1_high:00FFF0A5 .space 1 IO1_high:00FFF0A6 .space 1 IO1_high:00FFF0A7 .space 1 IO1_high:00FFF0A8 .space 1 IO1_high:00FFF0A9 .space 1 IO1_high:00FFF0AA .space 1 IO1_high:00FFF0AB .space 1 IO1_high:00FFF0AC .space 1 IO1_high:00FFF0AD .space 1 IO1_high:00FFF0AE .space 1 IO1_high:00FFF0AF .space 1 IO1_high:00FFF0B0 .space 1 IO1_high:00FFF0B1 .space 1 IO1_high:00FFF0B2 .space 1 IO1_high:00FFF0B3 .space 1 IO1_high:00FFF0B4 .space 1 IO1_high:00FFF0B5 .space 1 IO1_high:00FFF0B6 .space 1 IO1_high:00FFF0B7 .space 1 IO1_high:00FFF0B8 .space 1 IO1_high:00FFF0B9 .space 1 IO1_high:00FFF0BA .space 1 IO1_high:00FFF0BB .space 1 IO1_high:00FFF0BC .space 1 IO1_high:00FFF0BD .space 1 IO1_high:00FFF0BE .space 1 IO1_high:00FFF0BF .space 1 IO1_high:00FFF0C0 .space 1 IO1_high:00FFF0C1 .space 1 IO1_high:00FFF0C2 .space 1 IO1_high:00FFF0C3 .space 1 IO1_high:00FFF0C4 .space 1 IO1_high:00FFF0C5 .space 1 IO1_high:00FFF0C6 .space 1 IO1_high:00FFF0C7 .space 1 IO1_high:00FFF0C8 .space 1 IO1_high:00FFF0C9 .space 1 IO1_high:00FFF0CA .space 1 IO1_high:00FFF0CB .space 1 IO1_high:00FFF0CC .space 1 IO1_high:00FFF0CD .space 1 IO1_high:00FFF0CE .space 1 IO1_high:00FFF0CF .space 1 IO1_high:00FFF0D0 TMRB_TMB1: .space 1 ; DATA XREF: set_timer_b_and_enable_irq+6w IO1_high:00FFF0D0 ; set_timer_b_and_enable_irq+18t IO1_high:00FFF0D1 TMRB_TCB1_TLB1: .space 1 ; DATA XREF: set_timer_b_and_enable_irq+Cw IO1_high:00FFF0D2 .space 1 IO1_high:00FFF0D3 .space 1 IO1_high:00FFF0D4 .space 1 IO1_high:00FFF0D5 .space 1 IO1_high:00FFF0D6 .space 1 IO1_high:00FFF0D7 .space 1 IO1_high:00FFF0D8 .space 1 IO1_high:00FFF0D9 .space 1 IO1_high:00FFF0DA .space 1 IO1_high:00FFF0DB .space 1 IO1_high:00FFF0DC .space 1 IO1_high:00FFF0DD .space 1 IO1_high:00FFF0DE .space 1 IO1_high:00FFF0DF .space 1 IO1_high:00FFF0E0 SSU_SSCRH: .space 1 ; DATA XREF: basicIoConfig+14w IO1_high:00FFF0E1 SSU_SSCRL: .space 1 ; DATA XREF: basicIoConfig+4t IO1_high:00FFF0E2 SSU_SSMR: .space 1 ; DATA XREF: ssuConfigure+14w IO1_high:00FFF0E2 ; ssuConfigure+1Cw ... IO1_high:00FFF0E3 SSU_SSER: .space 1 ; DATA XREF: accelRegRead+10w IO1_high:00FFF0E3 ; accelRegRead+62w ... IO1_high:00FFF0E4 SSU_SSSR: .space 1 ; DATA XREF: accelRegRead+4r IO1_high:00FFF0E4 ; accelRegRead+Aw ... IO1_high:00FFF0E5 .space 1 IO1_high:00FFF0E6 .space 1 IO1_high:00FFF0E7 .space 1 IO1_high:00FFF0E8 .space 1 IO1_high:00FFF0E9 SSU_SSRDR: .space 1 ; DATA XREF: accelRegRead+2Er IO1_high:00FFF0E9 ; accelRegRead+48r ... IO1_high:00FFF0EA .space 1 IO1_high:00FFF0EB SSU_SSTDR: .space 1 ; DATA XREF: accelRegRead+22w IO1_high:00FFF0EB ; accelRegRead+3Cw ... IO1_high:00FFF0EC .space 1 IO1_high:00FFF0ED .space 1 IO1_high:00FFF0EE .space 1 IO1_high:00FFF0EF .space 1 IO1_high:00FFF0F0 TMRW_TMRW: .space 1 ; DATA XREF: configureIrdaAndIrRxTimer+32t IO1_high:00FFF0F0 ; maybe_shutDownIr_then_performActionAsRequested+1At ... IO1_high:00FFF0F1 TMRW_TCRW: .space 1 ; DATA XREF: configureIrdaAndIrRxTimer+18r IO1_high:00FFF0F1 ; configureIrdaAndIrRxTimer+20w ... IO1_high:00FFF0F2 TMRW_TIERW: .space 1 ; DATA XREF: configureIrdaAndIrRxTimer+2Ct IO1_high:00FFF0F2 ; randomEepromChecksumCheck+14t ... IO1_high:00FFF0F3 TMRW_TSRW: .space 1 ; DATA XREF: sub_37D6+1Et IO1_high:00FFF0F3 ; sub_3810+14t ... IO1_high:00FFF0F4 TMRW_TIOR0: .space 1 ; DATA XREF: configureSomeIoAndTimerW+26w IO1_high:00FFF0F4 ; sub_37D6+14w ... IO1_high:00FFF0F5 TMRW_TIOR1: .space 1 ; DATA XREF: configureSomeIoAndTimerW+2Cw IO1_high:00FFF0F5 ; sub_37D6+1Aw ... IO1_high:00FFF0F6 TMRW_TCNT: .space 2 ; DATA XREF: sendPacket+60r IO1_high:00FFF0F6 ; sendPacket:small_delayr ... IO1_high:00FFF0F8 TMRW_GRA: .space 2 ; DATA XREF: configureSomeIoAndTimerW+32w IO1_high:00FFF0F8 ; setBeeperFreq:loc_384Ew ... IO1_high:00FFF0FA TMRW_GRB: .space 2 ; DATA XREF: configureSomeIoAndTimerW+36w IO1_high:00FFF0FA ; setBeeperFreq+1Aw ... IO1_high:00FFF0FC TMRW_GRC: .space 2 ; DATA XREF: configureSomeIoAndTimerW+3Aw IO1_high:00FFF0FC ; setBeeperFreq+1Ew ... IO1_high:00FFF0FE .space 1 IO1_high:00FFF0FF .space 1 IO1_high:00FFF0FF RAM_hi:00FFF780 ; =========================================================================== RAM_hi:00FFF780 RAM_hi:00FFF780 ; Segment type: Regular RAM_hi:00FFF780 .data; RAM_hi RAM_hi:00FFF780 RamCache_totalSteps:.space 4 ; DATA XREF: ENTRY:reset_cause_analyzedt RAM_hi:00FFF780 ; startWalkEepromActions+84t ... RAM_hi:00FFF784 RamCache_STEP_COUNT_maybe:.space 4 ; DATA XREF: performActionAsRequestedByRemote+E2w RAM_hi:00FFF784 ; sub_A3AA+18r ... RAM_hi:00FFF788 RamCache_lastSyncTime:.space 4 ; DATA XREF: processSyncPacketFromGame+62w RAM_hi:00FFF788 ; logEvent+7Er ... RAM_hi:00FFF78C RamCache_totalDays:.space 2 ; DATA XREF: dayEndedRecordailyStepadnshipHistoricStepCounts+4r RAM_hi:00FFF78C ; dayEndedRecordailyStepadnshipHistoricStepCounts+10w ... RAM_hi:00FFF78E RamCache_curWatts:.space 2 ; DATA XREF: startWalkEepromActions+7Cw RAM_hi:00FFF78E ; end_walk_action+20w ... RAM_hi:00FFF790 word_FFF790: .space 2 ; DATA XREF: startWalkEepromActions+74w RAM_hi:00FFF790 ; pokemonJoinsEmptyWalkerWalk+128w ... RAM_hi:00FFF792 stepToWattDividerState:.space 1 ; DATA XREF: accountForStepTakenLikely+6Er RAM_hi:00FFF792 ; accountForStepTakenLikely+74w ... RAM_hi:00FFF792 ; counts to 20, when reached, watt increments, this resets RAM_hi:00FFF793 likelyCurEventLogPointer:.space 1 ; DATA XREF: startWalkEepromActions+78w RAM_hi:00FFF793 ; end_walk_action+1Aw ... RAM_hi:00FFF794 .space 1 RAM_hi:00FFF795 .space 1 RAM_hi:00FFF796 .space 1 RAM_hi:00FFF797 RamCache_settingsByte:.space 1 ; DATA XREF: performActionAsRequestedByRemote+BCr RAM_hi:00FFF797 ; performActionAsRequestedByRemote+CAr ... RAM_hi:00FFF798 byte_FFF798: .space 1 ; DATA XREF: maybeConfigureKeys+2w RAM_hi:00FFF798 ; likelyKeyDebounceRoutine+2w ... RAM_hi:00FFF799 byte_FFF799: .space 1 ; DATA XREF: maybeConfigureKeys+6w RAM_hi:00FFF799 ; likelyKeyDebounceRoutine+62r ... RAM_hi:00FFF79A CUR_KEYS: .space 1 ; DATA XREF: maybeConfigureKeys+Aw RAM_hi:00FFF79A ; likelyKeyDebounceRoutine+6Ew ... RAM_hi:00FFF79B byte_FFF79B: .space 1 ; DATA XREF: sleepModeEventLoop+DAw RAM_hi:00FFF79B ; maybeConfigureKeys+Ew ... RAM_hi:00FFF79C stepCountTodaySoFar:.space 4 ; DATA XREF: irCommsEventLoop+650r RAM_hi:00FFF79C ; irCommsEventLoop+E0Er ... RAM_hi:00FFF7A0 someWalkingRelatedState:.space 2 ; DATA XREF: startWalkEepromActions+70w RAM_hi:00FFF7A0 ; irCommsEventLoop+65Ar ... RAM_hi:00FFF7A0 ; clamped to 9999 (what is this?) RAM_hi:00FFF7A2 word_FFF7A2: .space 2 ; DATA XREF: performActionAsRequestedByRemote+96w RAM_hi:00FFF7A2 ; performActionAsRequestedByRemote+A4w ... RAM_hi:00FFF7A4 currentSecond: .space 1 ; DATA XREF: performActionAsRequestedByRemote+222t RAM_hi:00FFF7A4 ; rtcSet+96w ... RAM_hi:00FFF7A5 currentMinute: .space 1 ; DATA XREF: performActionAsRequestedByRemote+21Et RAM_hi:00FFF7A5 ; rtcSet+92w ... RAM_hi:00FFF7A6 currentHour: .space 1 ; DATA XREF: performActionAsRequestedByRemote+21At RAM_hi:00FFF7A6 ; sub_A3AA+A0r ... RAM_hi:00FFF7A7 byte_FFF7A7: .space 1 ; DATA XREF: sub_A34A+14r RAM_hi:00FFF7A7 ; sub_A34A:loc_A368r ... RAM_hi:00FFF7A8 byte_FFF7A8: .space 1 ; DATA XREF: ENTRY+42w RAM_hi:00FFF7A8 ; processSyncPacketFromGame+56w ... RAM_hi:00FFF7A9 base_contrast_value:.space 1 ; DATA XREF: initLcdUsingRomOrEepromCommands+44w RAM_hi:00FFF7A9 ; lcdSetContrast+18r RAM_hi:00FFF7AA menuCurItem: .space 1 ; DATA XREF: interactionHandlerHomeScreen+60w RAM_hi:00FFF7AA ; interactionHandlerHomeScreen+72w ... RAM_hi:00FFF7AB byte_FFF7AB: .space 1 ; DATA XREF: interactionHandler:case_0x05_0x12_0x13_0x14_0x15_defaultr RAM_hi:00FFF7AB ; interactionHandler+B6w RAM_hi:00FFF7AC curUiFlags: .space 1 ; DATA XREF: drawCurPokemonSmallAnimatedFrame+12r RAM_hi:00FFF7AC ; drawCurPokemonSmallAnimatedFrameHorizFlipped+12r ... RAM_hi:00FFF7AC ; bits: RAM_hi:00FFF7AC ; 0x01 - animation frame for "current pokemon" in "held pokemon and items" screen - one bit RAM_hi:00FFF7AC ; 0x02 - slower animation frame RAM_hi:00FFF7AD commsErrorMessageId:.space 1 ; DATA XREF: performActionAsRequestedByRemote:loc_282r RAM_hi:00FFF7AD ; configureSciAndSendPingByte+4w ... RAM_hi:00FFF7AE ACCEL_SAMPLE_NEXT_WRITE_IDX:.space 1 ; DATA XREF: performActionAsRequestedByRemote+208w RAM_hi:00FFF7AE ; accelReadSample+8Er ... RAM_hi:00FFF7AF byte_FFF7AF: .space 1 ; DATA XREF: ENTRY+5Cw RAM_hi:00FFF7AF ; sleepModeEventLoop+BEr ... RAM_hi:00FFF7B0 byte_FFF7B0: .space 1 ; DATA XREF: ENTRY+62w RAM_hi:00FFF7B0 ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+218w ... RAM_hi:00FFF7B1 currentlyActiveView:.space 1 ; DATA XREF: performActionAsRequestedByRemote+74w RAM_hi:00FFF7B1 ; performActionAsRequestedByRemote+82w ... RAM_hi:00FFF7B2 step_detection_related_A:.space 1 ; DATA XREF: accountForStepTakenLikelyr RAM_hi:00FFF7B2 ; accountForStepTakenLikely+A8r ... RAM_hi:00FFF7B3 step_detection_related_B:.space 1 ; DATA XREF: accountForStepTakenLikely+4r RAM_hi:00FFF7B3 ; accountForStepTakenLikely:loc_254Ar ... RAM_hi:00FFF7B4 step_detection_related_C:.space 1 ; DATA XREF: accountForStepTakenLikely+Er RAM_hi:00FFF7B4 ; accountForStepTakenLikely+14w ... RAM_hi:00FFF7B5 common_bit_flags:.space 1 ; DATA XREF: ENTRY+46t RAM_hi:00FFF7B5 ; drawLowBatteryIconAnimationFrame+8r ... RAM_hi:00FFF7B6 walker_status_flags:.space 1 ; DATA XREF: ENTRY+4Er RAM_hi:00FFF7B6 ; ENTRY+56w ... RAM_hi:00FFF7B6 ; 0x02 - walker inited RAM_hi:00FFF7B6 ; 0x04 - have walking poke RAM_hi:00FFF7B7 .space 1 RAM_hi:00FFF7B8 TimeWhenLAstByteRxed:.space 2 ; DATA XREF: configureSciAndSendPingByte+48w RAM_hi:00FFF7B8 ; irCommsEventLoop+52w ... RAM_hi:00FFF7B8 ; as per TMRW RAM_hi:00FFF7BA NumBytesRxedsoFar:.space 1 ; DATA XREF: configureSciAndSendPingByte+3Cw RAM_hi:00FFF7BA ; irCommsEventLoop+1Ar ... RAM_hi:00FFF7BB byte_FFF7BB: .space 1 ; DATA XREF: sleepModeEventLoop+D6w RAM_hi:00FFF7BB ; likelyKeyDebounceRoutine+14r ... RAM_hi:00FFF7BC .space 1 RAM_hi:00FFF7BD .space 1 RAM_hi:00FFF7BE CUR_HEAP_PTR: .space 2 ; DATA XREF: setHeapPointer+4w RAM_hi:00FFF7BE ; static_malloc+2t RAM_hi:00FFF7C0 RandomSeed: .space 4 ; DATA XREF: configureSciAndSendPingByte+8r RAM_hi:00FFF7C0 ; setRandomSeedw ... RAM_hi:00FFF7C4 word_FFF7C4: .space 2 ; DATA XREF: is_F7C4_nonzeror RAM_hi:00FFF7C4 ; configureSomeIoAndTimerW+42w ... RAM_hi:00FFF7C6 likelyVolume: .space 1 ; DATA XREF: configureSomeIoAndTimerW+8w RAM_hi:00FFF7C6 ; randomEepromChecksumCheck+Cr ... RAM_hi:00FFF7C7 .space 1 RAM_hi:00FFF7C8 word_FFF7C8: .space 2 ; DATA XREF: randomEepromChecksumCheck+BEw RAM_hi:00FFF7C8 ; write_F7C4_clear_F7C8_and_F7CA+6w ... RAM_hi:00FFF7CA word_FFF7CA: .space 2 ; DATA XREF: randomEepromChecksumCheck+C2w RAM_hi:00FFF7CA ; write_F7C4_clear_F7C8_and_F7CA+Aw ... RAM_hi:00FFF7CC byte_FFF7CC: .space 1 ; DATA XREF: configureSomeIoAndTimerW+2w RAM_hi:00FFF7CC ; timer_w_irq+9Ew ... RAM_hi:00FFF7CD .space 1 RAM_hi:00FFF7CE gCurSubstateY: .space 1 ; DATA XREF: performActionAsRequestedByRemote+114w RAM_hi:00FFF7CE ; performActionAsRequestedByRemote:loc_1C2w ... RAM_hi:00FFF7CE ; Substate: RAM_hi:00FFF7CE ; gifted items view: this is item number that has focus and arrow RAM_hi:00FFF7CE ; peer play. bit 0x01 - which peer are we. bit 0x02 - is other side unown or spinda RAM_hi:00FFF7CE ; battle: poke idx (1..3 is route poke, 4 is event poke) RAM_hi:00FFF7CE ; trainer card: dayIdx ( 0 = front card, 1+ - step stats for thta day) RAM_hi:00FFF7CF gCurSubstateZ: .space 1 ; DATA XREF: performActionAsRequestedByRemote+14Aw RAM_hi:00FFF7CF ; performActionAsRequestedByRemote+160w ... RAM_hi:00FFF7CF ; different per mode RAM_hi:00FFF7CF ; battle: RAM_hi:00FFF7CF ; 0 - battle opening animation RAM_hi:00FFF7CF ; 1 - "XYZ appeared" message RAM_hi:00FFF7CF ; 2 - "attack evade catch" directions shown RAM_hi:00FFF7CF ; 3 - our action taken. details in gCurSubstateF RAM_hi:00FFF7CF ; 4 - poke action taken. details in gCurSubstateF RAM_hi:00FFF7CF ; 5 - "was too strong" RAM_hi:00FFF7CF ; 6 - we lost RAM_hi:00FFF7CF ; 7 - fled RAM_hi:00FFF7CF ; 8 - staredown RAM_hi:00FFF7CF ; 9 - almost had it RAM_hi:00FFF7CF ; 10 - "threw a pokeball" RAM_hi:00FFF7CF ; 11, 17 - cloud of th epokeball in action collapsing pokemon into itself RAM_hi:00FFF7CF ; 12, 14 - pokeball flying RAM_hi:00FFF7CF ; 13 - pokeball flying RAM_hi:00FFF7CF ; 15 - catch animation plays RAM_hi:00FFF7CF ; 16 - caught! RAM_hi:00FFF7CF ; switcht: RAM_hi:00FFF7CF ; cur slected poke name RAM_hi:00FFF7D0 gCurSubstateA: .space 2 ; DATA XREF: performActionAsRequestedByRemote+164w RAM_hi:00FFF7D0 ; performActionAsRequestedByRemote:loc_27Cw ... RAM_hi:00FFF7D0 ; Substate for various modes RAM_hi:00FFF7D0 ; POKeRADAR: currently pointed-to bush (arrow location) RAM_hi:00FFF7D0 ; ItemScreenHandler: RAM_hi:00FFF7D0 ; 0x0001 - have walking pokemon (are we on a stroll) RAM_hi:00FFF7D0 ; 0x0002 - caught pokemon #0 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0004 - caught pokemon #1 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0008 - caught pokemon #2 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0010 - light grey pokeball RAM_hi:00FFF7D0 ; 0x0020 - tiny map icon RAM_hi:00FFF7D0 ; 0x0040 - found item #0 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0080 - found item #1 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0100 - found item #2 (slot nonempty) RAM_hi:00FFF7D0 ; 0x0200 - grey item icon RAM_hi:00FFF7D0 ; ItemRXed - what was RXed RAM_hi:00FFF7D0 ; 0 - event pokemon RAM_hi:00FFF7D0 ; 1 - special route RAM_hi:00FFF7D0 ; 2 - item RAM_hi:00FFF7D0 ; 3 - special RAM_hi:00FFF7D0 ; 4 - stamp: heart RAM_hi:00FFF7D0 ; 5 - stamp: spade RAM_hi:00FFF7D0 ; 6 - stamp: diamond RAM_hi:00FFF7D0 ; 7 - stamp: club RAM_hi:00FFF7D0 ; switch: RAM_hi:00FFF7D0 ; zero - pokemon does RAM_hi:00FFF7D0 ; nonzero - item needs to be switched RAM_hi:00FFF7D0 ; item RXed: RAM_hi:00FFF7D0 ; what sort of thing was RXed: item, map, route, etc RAM_hi:00FFF7D2 gCurSubstateB: .space 2 ; DATA XREF: sub_2938+10w RAM_hi:00FFF7D2 ; sub_2972+DEw ... RAM_hi:00FFF7D2 ; Substate: RAM_hi:00FFF7D2 ; in gifted items view this has a bitfield of which items we have (10 bits) RAM_hi:00FFF7D4 gCurSubstateC: .space 1 ; DATA XREF: sub_2938+1Cw RAM_hi:00FFF7D4 ; interactionHandlerPokeBattle+84w ... RAM_hi:00FFF7D5 gCurSubstateD: .space 1 ; DATA XREF: sub_2938+22w RAM_hi:00FFF7D5 ; interactionHandlerPokeBattle+46w ... RAM_hi:00FFF7D6 gCurSubstateE: .space 2 ; DATA XREF: interactionHandlerPokeBattle+242w RAM_hi:00FFF7D6 ; interactionHandlerPokeBattle+24Cw ... RAM_hi:00FFF7D6 ; ubstate for various modes RAM_hi:00FFF7D6 ; POKeRADAR: bool. true if we showing a message other than "find a pokemon" RAM_hi:00FFF7D8 gCurSubstateF: .space 2 ; DATA XREF: sub_2938+26r RAM_hi:00FFF7D8 ; sub_2938+2Cw ... RAM_hi:00FFF7D8 ; different per view RAM_hi:00FFF7D8 ; battle: RAM_hi:00FFF7D8 ; bitfield [3..5]: battle action animation (our action) RAM_hi:00FFF7D8 ; 0 - attacked RAM_hi:00FFF7D8 ; 1 - evaded RAM_hi:00FFF7D8 ; 2 - critical hit RAM_hi:00FFF7D8 ; bitfield [1..2]: battle action animation (their action) RAM_hi:00FFF7D8 ; 0 - attacked RAM_hi:00FFF7D8 ; 1 - evaded RAM_hi:00FFF7D8 ; 2 - critical hit RAM_hi:00FFF7DA word_FFF7DA: .space 2 ; DATA XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+7Ar RAM_hi:00FFF7DA ; drawSomethingWithTinyChars2+42r ... RAM_hi:00FFF7DC word_FFF7DC: .space 2 ; DATA XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+A8r RAM_hi:00FFF7DC ; drawSomethingWithTinyChars2+A6r ... RAM_hi:00FFF7DE word_FFF7DE: .space 2 ; DATA XREF: processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+E0r RAM_hi:00FFF7DE ; drawSomethingWithTinyChars2+F6r ... RAM_hi:00FFF7E0 currentEventLoopFunc:.space 2 ; DATA XREF: ENTRY:call_event_loop_foeverr RAM_hi:00FFF7E0 ; setEventLoopFunc+2r ... RAM_hi:00FFF7E2 prevEventLoopFunc:.space 2 ; DATA XREF: setEventLoopFunc+6w RAM_hi:00FFF7E4 byte_FFF7E4: .space 1 ; DATA XREF: initLcdUsingRomOrEepromCommands+8Aw RAM_hi:00FFF7E4 ; initLcdUsingRomOrEepromCommands+96w ... RAM_hi:00FFF7E5 .space 1 RAM_hi:00FFF7E6 sometimes_new_rxed_data_for_0xED:.space 4 RAM_hi:00FFF7E6 ; DATA XREF: processSyncPacketFromGame+16t RAM_hi:00FFF7E6 ; startWalkEepromActions+D0r ... RAM_hi:00FFF7E6 ; from ??? and from peer play peer RAM_hi:00FFF7EA dword_FFF7EA: .space 4 ; DATA XREF: startWalkEepromActions+DAr RAM_hi:00FFF7EE word_FFF7EE: .space 2 ; DATA XREF: startWalkEepromActions+E6r RAM_hi:00FFF7F0 word_FFF7F0: .space 2 ; DATA XREF: startWalkEepromActions+EEr RAM_hi:00FFF7F2 dword_FFF7F2: .space 4 ; DATA XREF: startWalkEepromActions+F6r RAM_hi:00FFF7F6 unk_FFF7F6: .space 1 ; DATA XREF: irCommsEventLoop:we_do_have_poket RAM_hi:00FFF7F6 ; irCommsEventLoop:loc_EB0t RAM_hi:00FFF7F7 .space 1 RAM_hi:00FFF7F8 .space 1 RAM_hi:00FFF7F9 .space 1 RAM_hi:00FFF7FA .space 1 RAM_hi:00FFF7FB .space 1 RAM_hi:00FFF7FC .space 1 RAM_hi:00FFF7FD .space 1 RAM_hi:00FFF7FE .space 1 RAM_hi:00FFF7FF .space 1 RAM_hi:00FFF800 .space 1 RAM_hi:00FFF801 .space 1 RAM_hi:00FFF802 .space 1 RAM_hi:00FFF803 .space 1 RAM_hi:00FFF804 .space 1 RAM_hi:00FFF805 .space 1 RAM_hi:00FFF806 .space 1 RAM_hi:00FFF807 .space 1 RAM_hi:00FFF808 .space 1 RAM_hi:00FFF809 .space 1 RAM_hi:00FFF80A .space 1 RAM_hi:00FFF80B .space 1 RAM_hi:00FFF80C .space 1 RAM_hi:00FFF80D .space 1 RAM_hi:00FFF80E .space 1 RAM_hi:00FFF80F .space 1 RAM_hi:00FFF810 .space 1 RAM_hi:00FFF811 .space 1 RAM_hi:00FFF812 .space 1 RAM_hi:00FFF813 .space 1 RAM_hi:00FFF814 .space 1 RAM_hi:00FFF815 .space 1 RAM_hi:00FFF816 .space 1 RAM_hi:00FFF817 .space 1 RAM_hi:00FFF818 .space 1 RAM_hi:00FFF819 .space 1 RAM_hi:00FFF81A .space 1 RAM_hi:00FFF81B .space 1 RAM_hi:00FFF81C .space 1 RAM_hi:00FFF81D .space 1 RAM_hi:00FFF81E .space 1 RAM_hi:00FFF81F .space 1 RAM_hi:00FFF820 .space 1 RAM_hi:00FFF821 .space 1 RAM_hi:00FFF822 .space 1 RAM_hi:00FFF823 .space 1 RAM_hi:00FFF824 .space 1 RAM_hi:00FFF825 .space 1 RAM_hi:00FFF826 ACCEL_SAMPLES_X:.space 1 ; DATA XREF: randomEepromChecksumCheck+58t RAM_hi:00FFF826 ; timer_w_irq+B4t ... RAM_hi:00FFF827 .space 1 RAM_hi:00FFF828 .space 1 RAM_hi:00FFF829 .space 1 RAM_hi:00FFF82A .space 1 RAM_hi:00FFF82B .space 1 RAM_hi:00FFF82C .space 1 RAM_hi:00FFF82D .space 1 RAM_hi:00FFF82E byte_FFF82E: .space 1 ; DATA XREF: startWalkEepromActions+112t RAM_hi:00FFF82F .space 1 RAM_hi:00FFF830 .space 1 RAM_hi:00FFF831 .space 1 RAM_hi:00FFF832 .space 1 RAM_hi:00FFF833 .space 1 RAM_hi:00FFF834 .space 1 RAM_hi:00FFF835 .space 1 RAM_hi:00FFF836 .space 1 RAM_hi:00FFF837 .space 1 RAM_hi:00FFF838 .space 1 RAM_hi:00FFF839 .space 1 RAM_hi:00FFF83A .space 1 RAM_hi:00FFF83B .space 1 RAM_hi:00FFF83C .space 1 RAM_hi:00FFF83D .space 1 RAM_hi:00FFF83E .space 1 RAM_hi:00FFF83F .space 1 RAM_hi:00FFF840 byte_FFF840: .space 1 ; DATA XREF: irCommsEventLoop+89Er RAM_hi:00FFF840 ; irCommsEventLoop+8D8r ... RAM_hi:00FFF841 byte_FFF841: .space 1 ; DATA XREF: processSyncPacketFromGame+22r RAM_hi:00FFF841 ; processSyncPacketFromGame:likely_set_rtcr ... RAM_hi:00FFF842 byte_FFF842: .space 1 ; DATA XREF: startWalkEepromActions+11Er RAM_hi:00FFF842 ; irCommsEventLoop+4D6r ... RAM_hi:00FFF843 byte_FFF843: .space 1 ; DATA XREF: startWalkEepromActions+126r RAM_hi:00FFF844 byte_FFF844: .space 1 ; DATA XREF: irCommsEventLoop:proto_version_matchr RAM_hi:00FFF844 ; irCommsEventLoop:loc_E8Er RAM_hi:00FFF845 .space 1 RAM_hi:00FFF846 dword_FFF846: .space 4 ; DATA XREF: processSyncPacketFromGame:loc_40Er RAM_hi:00FFF84A .space 1 RAM_hi:00FFF84B .space 1 RAM_hi:00FFF84C .space 1 RAM_hi:00FFF84D .space 1 RAM_hi:00FFF84E RamCache_ED_data:.space 4 ; DATA XREF: startWalkEepromActions+9Et RAM_hi:00FFF84E ; irCommsEventLoop+6CCt ... RAM_hi:00FFF852 .space 1 RAM_hi:00FFF853 .space 1 RAM_hi:00FFF854 .space 1 RAM_hi:00FFF855 .space 1 RAM_hi:00FFF856 word_FFF856: .space 2 ; DATA XREF: irCommsEventLoop+6E0r RAM_hi:00FFF856 ; irCommsEventLoop+E9Er RAM_hi:00FFF858 .space 1 RAM_hi:00FFF859 .space 1 RAM_hi:00FFF85A .space 1 RAM_hi:00FFF85B .space 1 RAM_hi:00FFF85C .space 1 RAM_hi:00FFF85D .space 1 RAM_hi:00FFF85E .space 1 RAM_hi:00FFF85F .space 1 RAM_hi:00FFF860 .space 1 RAM_hi:00FFF861 .space 1 RAM_hi:00FFF862 .space 1 RAM_hi:00FFF863 .space 1 RAM_hi:00FFF864 .space 1 RAM_hi:00FFF865 .space 1 RAM_hi:00FFF866 ACCEL_SAMPLES_Y:.space 1 ; DATA XREF: accelReadSample+A6t RAM_hi:00FFF866 ; accelReadSample+136t ... RAM_hi:00FFF867 .space 1 RAM_hi:00FFF868 .space 1 RAM_hi:00FFF869 .space 1 RAM_hi:00FFF86A .space 1 RAM_hi:00FFF86B .space 1 RAM_hi:00FFF86C .space 1 RAM_hi:00FFF86D .space 1 RAM_hi:00FFF86E .space 1 RAM_hi:00FFF86F .space 1 RAM_hi:00FFF870 .space 1 RAM_hi:00FFF871 .space 1 RAM_hi:00FFF872 .space 1 RAM_hi:00FFF873 .space 1 RAM_hi:00FFF874 .space 1 RAM_hi:00FFF875 .space 1 RAM_hi:00FFF876 .space 1 RAM_hi:00FFF877 .space 1 RAM_hi:00FFF878 .space 1 RAM_hi:00FFF879 .space 1 RAM_hi:00FFF87A .space 1 RAM_hi:00FFF87B .space 1 RAM_hi:00FFF87C .space 1 RAM_hi:00FFF87D .space 1 RAM_hi:00FFF87E .space 1 RAM_hi:00FFF87F .space 1 RAM_hi:00FFF880 .space 1 RAM_hi:00FFF881 .space 1 RAM_hi:00FFF882 .space 1 RAM_hi:00FFF883 .space 1 RAM_hi:00FFF884 .space 1 RAM_hi:00FFF885 .space 1 RAM_hi:00FFF886 unk_FFF886: .space 1 ; DATA XREF: irCommsEventLoop+AF0t RAM_hi:00FFF886 ; irCommsEventLoop+B38t RAM_hi:00FFF887 .space 1 RAM_hi:00FFF888 .space 1 RAM_hi:00FFF889 .space 1 RAM_hi:00FFF88A .space 1 RAM_hi:00FFF88B .space 1 RAM_hi:00FFF88C .space 1 RAM_hi:00FFF88D .space 1 RAM_hi:00FFF88E .space 1 RAM_hi:00FFF88F .space 1 RAM_hi:00FFF890 .space 1 RAM_hi:00FFF891 .space 1 RAM_hi:00FFF892 .space 1 RAM_hi:00FFF893 .space 1 RAM_hi:00FFF894 .space 1 RAM_hi:00FFF895 .space 1 RAM_hi:00FFF896 unk_FFF896: .space 1 ; DATA XREF: irCommsEventLoop+6F4t RAM_hi:00FFF896 ; irCommsEventLoop+EB2t RAM_hi:00FFF897 .space 1 RAM_hi:00FFF898 .space 1 RAM_hi:00FFF899 .space 1 RAM_hi:00FFF89A .space 1 RAM_hi:00FFF89B .space 1 RAM_hi:00FFF89C .space 1 RAM_hi:00FFF89D .space 1 RAM_hi:00FFF89E .space 1 RAM_hi:00FFF89F .space 1 RAM_hi:00FFF8A0 .space 1 RAM_hi:00FFF8A1 .space 1 RAM_hi:00FFF8A2 .space 1 RAM_hi:00FFF8A3 .space 1 RAM_hi:00FFF8A4 .space 1 RAM_hi:00FFF8A5 .space 1 RAM_hi:00FFF8A6 ACCEL_SAMPLES_Z:.space 1 ; DATA XREF: accelReadSample+B4t RAM_hi:00FFF8A6 ; accelReadSample+184t ... RAM_hi:00FFF8A7 .space 1 RAM_hi:00FFF8A8 .space 1 RAM_hi:00FFF8A9 .space 1 RAM_hi:00FFF8AA .space 1 RAM_hi:00FFF8AB .space 1 RAM_hi:00FFF8AC .space 1 RAM_hi:00FFF8AD .space 1 RAM_hi:00FFF8AE .space 1 RAM_hi:00FFF8AF .space 1 RAM_hi:00FFF8B0 .space 1 RAM_hi:00FFF8B1 .space 1 RAM_hi:00FFF8B2 .space 1 RAM_hi:00FFF8B3 .space 1 RAM_hi:00FFF8B4 .space 1 RAM_hi:00FFF8B5 .space 1 RAM_hi:00FFF8B6 SuggestedOurSideSessionId:.space 4 ; DATA XREF: configureSciAndSendPingByte+Ew RAM_hi:00FFF8B6 ; configureSciAndSendPingByte+14r ... RAM_hi:00FFF8BA CurrentSessionID:.space 4 ; DATA XREF: sendPacket+10r RAM_hi:00FFF8BA ; configureSciAndSendPingByte+1Aw ... RAM_hi:00FFF8BE ourPeerRole: .space 1 ; DATA XREF: configureSciAndSendPingByte+22w RAM_hi:00FFF8BE ; irCommsEventLoop+7Er ... RAM_hi:00FFF8BE ; 1 - establishing (starts here) RAM_hi:00FFF8BE ; 2 - master to another walker RAM_hi:00FFF8BE ; 3 - slave to game / another walker RAM_hi:00FFF8BF numTimesWeSentIrAdv:.space 1 ; DATA XREF: configureSciAndSendPingByte+26w RAM_hi:00FFF8BF ; irCommsEventLoop+74r ... RAM_hi:00FFF8C0 .space 1 RAM_hi:00FFF8C1 byte_FFF8C1: .space 1 ; DATA XREF: configureSciAndSendPingByte+40w RAM_hi:00FFF8C2 NumPingsSent: .space 1 ; DATA XREF: configureSciAndSendPingByte+2Aw RAM_hi:00FFF8C2 ; irCommsEventLoop+188r ... RAM_hi:00FFF8C3 bool_got_at_least_one_packet:.space 1 ; DATA XREF: configureSciAndSendPingByte+34t RAM_hi:00FFF8C3 ; irCommsEventLoop:loc_964r ... RAM_hi:00FFF8C3 ; used to decide which error message to show on comms failure RAM_hi:00FFF8C4 REQUESTED_POKEMON_ACTION_TYPE:.space 1 ; DATA XREF: performActionAsRequestedByRemoter RAM_hi:00FFF8C4 ; configureSciAndSendPingByte+30w ... RAM_hi:00FFF8C5 PeerPlayStage: .space 1 ; DATA XREF: configureSciAndSendPingByte+4Cw RAM_hi:00FFF8C5 ; irCommsEventLoop+604w ... RAM_hi:00FFF8C5 ; 1 - write our animated poke sprite to slave's eeprom RAM_hi:00FFF8C5 ; 2 - read peer's animated poke sprite to our eeprom RAM_hi:00FFF8C5 ; 3 - write our rendered name image to slave's eeprom RAM_hi:00FFF8C5 ; 4 - read peer's rendered name image to our eeprom RAM_hi:00FFF8C5 ; 5 - write current team data to slave's eeprom RAM_hi:00FFF8C5 ; 6 - read current team data to slave's eeprom RAM_hi:00FFF8C5 ; RAM_hi:00FFF8C5 ; RAM_hi:00FFF8C5 ; progress ion is 1 -> 3 -> 5 -> 2 -> 4 -> 6 -> send cmd 14 RAM_hi:00FFF8C6 PeerPlayEepromXferSizeLeft:.space 2 ; DATA XREF: irCommsEventLoop+200r RAM_hi:00FFF8C6 ; irCommsEventLoop+614w ... RAM_hi:00FFF8C8 PeerPlayEepromXferLocalAddr:.space 2 ; DATA XREF: irCommsEventLoop+608w RAM_hi:00FFF8C8 ; irCommsEventLoop+9FEw ... RAM_hi:00FFF8CA PeerPlayEepromXferRemoteAddr:.space 2 ; DATA XREF: irCommsEventLoop+60Cw RAM_hi:00FFF8CA ; irCommsEventLoop+A02w ... RAM_hi:00FFF8CC PeerPlayEepromXfreNumPacketsSentSoFar:.space 1 RAM_hi:00FFF8CC ; DATA XREF: irCommsEventLoop+61Aw RAM_hi:00FFF8CC ; irCommsEventLoop+A10w ... RAM_hi:00FFF8CC ; no ide why we're counting RAM_hi:00FFF8CD LastRxedUnusedByte:.space 1 ; DATA XREF: sendPacket+78w RAM_hi:00FFF8CD ; configureIrdaAndIrRxTimer+46w ... RAM_hi:00FFF8CE TX_PACKET_cmd: .space 1 ; DATA XREF: sendPacket+6t RAM_hi:00FFF8CE ; sendPacket:loc_7BCt ... RAM_hi:00FFF8CF TX_PACKET_extraByte:.space 1 RAM_hi:00FFF8D0 TX_PACKET_crc_0:.space 1 RAM_hi:00FFF8D1 TX_PACKET_crc_1:.space 1 RAM_hi:00FFF8D2 TX_PACKET_session_0:.space 1 RAM_hi:00FFF8D3 TX_PACKET_session_1:.space 1 RAM_hi:00FFF8D4 TX_PACKET_session_2:.space 1 RAM_hi:00FFF8D5 TX_PACKET_session_3:.space 1 RAM_hi:00FFF8D6 TX_PACKET_payload:.space 1 ; DATA XREF: get_packet_data_pointert RAM_hi:00FFF8D7 .space 1 RAM_hi:00FFF8D8 .space 1 RAM_hi:00FFF8D9 .space 1 RAM_hi:00FFF8DA .space 1 RAM_hi:00FFF8DB .space 1 RAM_hi:00FFF8DC .space 1 RAM_hi:00FFF8DD .space 1 RAM_hi:00FFF8DE .space 1 RAM_hi:00FFF8DF .space 1 RAM_hi:00FFF8E0 .space 1 RAM_hi:00FFF8E1 .space 1 RAM_hi:00FFF8E2 .space 1 RAM_hi:00FFF8E3 .space 1 RAM_hi:00FFF8E4 .space 1 RAM_hi:00FFF8E5 .space 1 RAM_hi:00FFF8E6 dword_FFF8E6: .space 4 ; DATA XREF: clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6+Ew RAM_hi:00FFF8E6 ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+128r ... RAM_hi:00FFF8EA dword_FFF8EA: .space 4 ; DATA XREF: clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6+8w RAM_hi:00FFF8EA ; processAccelSamplesIncrementStepCountersAndNotifyInterestedPartiesAsNeeded+10Cw ... RAM_hi:00FFF8EE byte_FFF8EE: .space 1 ; DATA XREF: clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6+2w RAM_hi:00FFF8EE ; sub_9698+88w RAM_hi:00FFF8EF byte_FFF8EF: .space 1 ; DATA XREF: clear_bytes_at_F8EE_F8EF_words_at_F8EA_F8E6+14w RAM_hi:00FFF8EF ; sub_9698+60r ... RAM_hi:00FFF8F0 HEAP_START: .space 1 ; DATA XREF: setHeapPointert RAM_hi:00FFF8F0 ; static_malloc+Et RAM_hi:00FFF8F1 .space 1 RAM_hi:00FFF8F2 .space 1 RAM_hi:00FFF8F3 .space 1 RAM_hi:00FFF8F4 .space 1 RAM_hi:00FFF8F5 .space 1 RAM_hi:00FFF8F6 .space 1 RAM_hi:00FFF8F7 .space 1 RAM_hi:00FFF8F8 .space 1 RAM_hi:00FFF8F9 .space 1 RAM_hi:00FFF8FA .space 1 RAM_hi:00FFF8FB .space 1 RAM_hi:00FFF8FC .space 1 RAM_hi:00FFF8FD .space 1 RAM_hi:00FFF8FE .space 1 RAM_hi:00FFF8FF .space 1 RAM_hi:00FFF900 .space 1 RAM_hi:00FFF901 .space 1 RAM_hi:00FFF902 .space 1 RAM_hi:00FFF903 .space 1 RAM_hi:00FFF904 .space 1 RAM_hi:00FFF905 .space 1 RAM_hi:00FFF906 .space 1 RAM_hi:00FFF907 .space 1 RAM_hi:00FFF908 .space 1 RAM_hi:00FFF909 .space 1 RAM_hi:00FFF90A .space 1 RAM_hi:00FFF90B .space 1 RAM_hi:00FFF90C .space 1 RAM_hi:00FFF90D .space 1 RAM_hi:00FFF90E .space 1 RAM_hi:00FFF90F .space 1 RAM_hi:00FFF910 .space 1 RAM_hi:00FFF911 .space 1 RAM_hi:00FFF912 .space 1 RAM_hi:00FFF913 .space 1 RAM_hi:00FFF914 .space 1 RAM_hi:00FFF915 .space 1 RAM_hi:00FFF916 .space 1 RAM_hi:00FFF917 .space 1 RAM_hi:00FFF918 .space 1 RAM_hi:00FFF919 .space 1 RAM_hi:00FFF91A .space 1 RAM_hi:00FFF91B .space 1 RAM_hi:00FFF91C .space 1 RAM_hi:00FFF91D .space 1 RAM_hi:00FFF91E .space 1 RAM_hi:00FFF91F .space 1 RAM_hi:00FFF920 .space 1 RAM_hi:00FFF921 .space 1 RAM_hi:00FFF922 .space 1 RAM_hi:00FFF923 .space 1 RAM_hi:00FFF924 .space 1 RAM_hi:00FFF925 .space 1 RAM_hi:00FFF926 .space 1 RAM_hi:00FFF927 .space 1 RAM_hi:00FFF928 .space 1 RAM_hi:00FFF929 .space 1 RAM_hi:00FFF92A .space 1 RAM_hi:00FFF92B .space 1 RAM_hi:00FFF92C .space 1 RAM_hi:00FFF92D .space 1 RAM_hi:00FFF92E .space 1 RAM_hi:00FFF92F .space 1 RAM_hi:00FFF930 .space 1 RAM_hi:00FFF931 .space 1 RAM_hi:00FFF932 .space 1 RAM_hi:00FFF933 .space 1 RAM_hi:00FFF934 .space 1 RAM_hi:00FFF935 .space 1 RAM_hi:00FFF936 .space 1 RAM_hi:00FFF937 .space 1 RAM_hi:00FFF938 .space 1 RAM_hi:00FFF939 .space 1 RAM_hi:00FFF93A .space 1 RAM_hi:00FFF93B .space 1 RAM_hi:00FFF93C .space 1 RAM_hi:00FFF93D .space 1 RAM_hi:00FFF93E .space 1 RAM_hi:00FFF93F .space 1 RAM_hi:00FFF940 .space 1 RAM_hi:00FFF941 .space 1 RAM_hi:00FFF942 .space 1 RAM_hi:00FFF943 .space 1 RAM_hi:00FFF944 .space 1 RAM_hi:00FFF945 .space 1 RAM_hi:00FFF946 .space 1 RAM_hi:00FFF947 .space 1 RAM_hi:00FFF948 .space 1 RAM_hi:00FFF949 .space 1 RAM_hi:00FFF94A .space 1 RAM_hi:00FFF94B .space 1 RAM_hi:00FFF94C .space 1 RAM_hi:00FFF94D .space 1 RAM_hi:00FFF94E .space 1 RAM_hi:00FFF94F .space 1 RAM_hi:00FFF950 .space 1 RAM_hi:00FFF951 .space 1 RAM_hi:00FFF952 .space 1 RAM_hi:00FFF953 .space 1 RAM_hi:00FFF954 .space 1 RAM_hi:00FFF955 .space 1 RAM_hi:00FFF956 DECOMPRESSION_BUFFER:.space 0x80 ; DATA XREF: irCommsEventLoop+646t RAM_hi:00FFF956 ; irCommsEventLoop+9ACt ... RAM_hi:00FFF9D6 .space 1 RAM_hi:00FFF9D7 .space 1 RAM_hi:00FFF9D8 .space 1 RAM_hi:00FFF9D9 .space 1 RAM_hi:00FFF9DA .space 1 RAM_hi:00FFF9DB .space 1 RAM_hi:00FFF9DC .space 1 RAM_hi:00FFF9DD .space 1 RAM_hi:00FFF9DE .space 1 RAM_hi:00FFF9DF .space 1 RAM_hi:00FFF9E0 .space 1 RAM_hi:00FFF9E1 .space 1 RAM_hi:00FFF9E2 .space 1 RAM_hi:00FFF9E3 .space 1 RAM_hi:00FFF9E4 .space 1 RAM_hi:00FFF9E5 .space 1 RAM_hi:00FFF9E6 .space 1 RAM_hi:00FFF9E7 .space 1 RAM_hi:00FFF9E8 .space 1 RAM_hi:00FFF9E9 .space 1 RAM_hi:00FFF9EA .space 1 RAM_hi:00FFF9EB .space 1 RAM_hi:00FFF9EC .space 1 RAM_hi:00FFF9ED .space 1 RAM_hi:00FFF9EE .space 1 RAM_hi:00FFF9EF .space 1 RAM_hi:00FFF9F0 .space 1 RAM_hi:00FFF9F1 .space 1 RAM_hi:00FFF9F2 .space 1 RAM_hi:00FFF9F3 .space 1 RAM_hi:00FFF9F4 .space 1 RAM_hi:00FFF9F5 .space 1 RAM_hi:00FFF9F6 .space 1 RAM_hi:00FFF9F7 .space 1 RAM_hi:00FFF9F8 .space 1 RAM_hi:00FFF9F9 .space 1 RAM_hi:00FFF9FA .space 1 RAM_hi:00FFF9FB .space 1 RAM_hi:00FFF9FC .space 1 RAM_hi:00FFF9FD .space 1 RAM_hi:00FFF9FE .space 1 RAM_hi:00FFF9FF .space 1 RAM_hi:00FFFA00 .space 1 RAM_hi:00FFFA01 .space 1 RAM_hi:00FFFA02 .space 1 RAM_hi:00FFFA03 .space 1 RAM_hi:00FFFA04 .space 1 RAM_hi:00FFFA05 .space 1 RAM_hi:00FFFA06 .space 1 RAM_hi:00FFFA07 .space 1 RAM_hi:00FFFA08 .space 1 RAM_hi:00FFFA09 .space 1 RAM_hi:00FFFA0A .space 1 RAM_hi:00FFFA0B .space 1 RAM_hi:00FFFA0C .space 1 RAM_hi:00FFFA0D .space 1 RAM_hi:00FFFA0E .space 1 RAM_hi:00FFFA0F .space 1 RAM_hi:00FFFA10 .space 1 RAM_hi:00FFFA11 .space 1 RAM_hi:00FFFA12 .space 1 RAM_hi:00FFFA13 .space 1 RAM_hi:00FFFA14 .space 1 RAM_hi:00FFFA15 .space 1 RAM_hi:00FFFA16 .space 1 RAM_hi:00FFFA17 .space 1 RAM_hi:00FFFA18 .space 1 RAM_hi:00FFFA19 .space 1 RAM_hi:00FFFA1A .space 1 RAM_hi:00FFFA1B .space 1 RAM_hi:00FFFA1C .space 1 RAM_hi:00FFFA1D .space 1 RAM_hi:00FFFA1E .space 1 RAM_hi:00FFFA1F .space 1 RAM_hi:00FFFA20 .space 1 RAM_hi:00FFFA21 .space 1 RAM_hi:00FFFA22 .space 1 RAM_hi:00FFFA23 .space 1 RAM_hi:00FFFA24 .space 1 RAM_hi:00FFFA25 .space 1 RAM_hi:00FFFA26 .space 1 RAM_hi:00FFFA27 .space 1 RAM_hi:00FFFA28 .space 1 RAM_hi:00FFFA29 .space 1 RAM_hi:00FFFA2A .space 1 RAM_hi:00FFFA2B .space 1 RAM_hi:00FFFA2C .space 1 RAM_hi:00FFFA2D .space 1 RAM_hi:00FFFA2E .space 1 RAM_hi:00FFFA2F .space 1 RAM_hi:00FFFA30 .space 1 RAM_hi:00FFFA31 .space 1 RAM_hi:00FFFA32 .space 1 RAM_hi:00FFFA33 .space 1 RAM_hi:00FFFA34 .space 1 RAM_hi:00FFFA35 .space 1 RAM_hi:00FFFA36 .space 1 RAM_hi:00FFFA37 .space 1 RAM_hi:00FFFA38 .space 1 RAM_hi:00FFFA39 .space 1 RAM_hi:00FFFA3A .space 1 RAM_hi:00FFFA3B .space 1 RAM_hi:00FFFA3C .space 1 RAM_hi:00FFFA3D .space 1 RAM_hi:00FFFA3E .space 1 RAM_hi:00FFFA3F .space 1 RAM_hi:00FFFA40 .space 1 RAM_hi:00FFFA41 .space 1 RAM_hi:00FFFA42 .space 1 RAM_hi:00FFFA43 .space 1 RAM_hi:00FFFA44 .space 1 RAM_hi:00FFFA45 .space 1 RAM_hi:00FFFA46 .space 1 RAM_hi:00FFFA47 .space 1 RAM_hi:00FFFA48 .space 1 RAM_hi:00FFFA49 .space 1 RAM_hi:00FFFA4A .space 1 RAM_hi:00FFFA4B .space 1 RAM_hi:00FFFA4C .space 1 RAM_hi:00FFFA4D .space 1 RAM_hi:00FFFA4E .space 1 RAM_hi:00FFFA4F .space 1 RAM_hi:00FFFA50 .space 1 RAM_hi:00FFFA51 .space 1 RAM_hi:00FFFA52 .space 1 RAM_hi:00FFFA53 .space 1 RAM_hi:00FFFA54 .space 1 RAM_hi:00FFFA55 .space 1 RAM_hi:00FFFA56 .space 1 RAM_hi:00FFFA57 .space 1 RAM_hi:00FFFA58 .space 1 RAM_hi:00FFFA59 .space 1 RAM_hi:00FFFA5A .space 1 RAM_hi:00FFFA5B .space 1 RAM_hi:00FFFA5C .space 1 RAM_hi:00FFFA5D .space 1 RAM_hi:00FFFA5E .space 1 RAM_hi:00FFFA5F .space 1 RAM_hi:00FFFA60 .space 1 RAM_hi:00FFFA61 .space 1 RAM_hi:00FFFA62 .space 1 RAM_hi:00FFFA63 .space 1 RAM_hi:00FFFA64 .space 1 RAM_hi:00FFFA65 .space 1 RAM_hi:00FFFA66 .space 1 RAM_hi:00FFFA67 .space 1 RAM_hi:00FFFA68 .space 1 RAM_hi:00FFFA69 .space 1 RAM_hi:00FFFA6A .space 1 RAM_hi:00FFFA6B .space 1 RAM_hi:00FFFA6C .space 1 RAM_hi:00FFFA6D .space 1 RAM_hi:00FFFA6E .space 1 RAM_hi:00FFFA6F .space 1 RAM_hi:00FFFA70 .space 1 RAM_hi:00FFFA71 .space 1 RAM_hi:00FFFA72 .space 1 RAM_hi:00FFFA73 .space 1 RAM_hi:00FFFA74 .space 1 RAM_hi:00FFFA75 .space 1 RAM_hi:00FFFA76 .space 1 RAM_hi:00FFFA77 .space 1 RAM_hi:00FFFA78 .space 1 RAM_hi:00FFFA79 .space 1 RAM_hi:00FFFA7A .space 1 RAM_hi:00FFFA7B .space 1 RAM_hi:00FFFA7C .space 1 RAM_hi:00FFFA7D .space 1 RAM_hi:00FFFA7E .space 1 RAM_hi:00FFFA7F .space 1 RAM_hi:00FFFA80 .space 1 RAM_hi:00FFFA81 .space 1 RAM_hi:00FFFA82 .space 1 RAM_hi:00FFFA83 .space 1 RAM_hi:00FFFA84 .space 1 RAM_hi:00FFFA85 .space 1 RAM_hi:00FFFA86 .space 1 RAM_hi:00FFFA87 .space 1 RAM_hi:00FFFA88 .space 1 RAM_hi:00FFFA89 .space 1 RAM_hi:00FFFA8A .space 1 RAM_hi:00FFFA8B .space 1 RAM_hi:00FFFA8C .space 1 RAM_hi:00FFFA8D .space 1 RAM_hi:00FFFA8E .space 1 RAM_hi:00FFFA8F .space 1 RAM_hi:00FFFA90 .space 1 RAM_hi:00FFFA91 .space 1 RAM_hi:00FFFA92 .space 1 RAM_hi:00FFFA93 .space 1 RAM_hi:00FFFA94 .space 1 RAM_hi:00FFFA95 .space 1 RAM_hi:00FFFA96 .space 1 RAM_hi:00FFFA97 .space 1 RAM_hi:00FFFA98 .space 1 RAM_hi:00FFFA99 .space 1 RAM_hi:00FFFA9A .space 1 RAM_hi:00FFFA9B .space 1 RAM_hi:00FFFA9C .space 1 RAM_hi:00FFFA9D .space 1 RAM_hi:00FFFA9E .space 1 RAM_hi:00FFFA9F .space 1 RAM_hi:00FFFAA0 .space 1 RAM_hi:00FFFAA1 .space 1 RAM_hi:00FFFAA2 .space 1 RAM_hi:00FFFAA3 .space 1 RAM_hi:00FFFAA4 .space 1 RAM_hi:00FFFAA5 .space 1 RAM_hi:00FFFAA6 .space 1 RAM_hi:00FFFAA7 .space 1 RAM_hi:00FFFAA8 .space 1 RAM_hi:00FFFAA9 .space 1 RAM_hi:00FFFAAA .space 1 RAM_hi:00FFFAAB .space 1 RAM_hi:00FFFAAC .space 1 RAM_hi:00FFFAAD .space 1 RAM_hi:00FFFAAE .space 1 RAM_hi:00FFFAAF .space 1 RAM_hi:00FFFAB0 .space 1 RAM_hi:00FFFAB1 .space 1 RAM_hi:00FFFAB2 .space 1 RAM_hi:00FFFAB3 .space 1 RAM_hi:00FFFAB4 .space 1 RAM_hi:00FFFAB5 .space 1 RAM_hi:00FFFAB6 .space 1 RAM_hi:00FFFAB7 .space 1 RAM_hi:00FFFAB8 .space 1 RAM_hi:00FFFAB9 .space 1 RAM_hi:00FFFABA .space 1 RAM_hi:00FFFABB .space 1 RAM_hi:00FFFABC .space 1 RAM_hi:00FFFABD .space 1 RAM_hi:00FFFABE .space 1 RAM_hi:00FFFABF .space 1 RAM_hi:00FFFAC0 .space 1 RAM_hi:00FFFAC1 .space 1 RAM_hi:00FFFAC2 .space 1 RAM_hi:00FFFAC3 .space 1 RAM_hi:00FFFAC4 .space 1 RAM_hi:00FFFAC5 .space 1 RAM_hi:00FFFAC6 .space 1 RAM_hi:00FFFAC7 .space 1 RAM_hi:00FFFAC8 .space 1 RAM_hi:00FFFAC9 .space 1 RAM_hi:00FFFACA .space 1 RAM_hi:00FFFACB .space 1 RAM_hi:00FFFACC .space 1 RAM_hi:00FFFACD .space 1 RAM_hi:00FFFACE .space 1 RAM_hi:00FFFACF .space 1 RAM_hi:00FFFAD0 .space 1 RAM_hi:00FFFAD1 .space 1 RAM_hi:00FFFAD2 .space 1 RAM_hi:00FFFAD3 .space 1 RAM_hi:00FFFAD4 .space 1 RAM_hi:00FFFAD5 .space 1 RAM_hi:00FFFAD6 .space 1 RAM_hi:00FFFAD7 .space 1 RAM_hi:00FFFAD8 .space 1 RAM_hi:00FFFAD9 .space 1 RAM_hi:00FFFADA .space 1 RAM_hi:00FFFADB .space 1 RAM_hi:00FFFADC .space 1 RAM_hi:00FFFADD .space 1 RAM_hi:00FFFADE .space 1 RAM_hi:00FFFADF .space 1 RAM_hi:00FFFAE0 .space 1 RAM_hi:00FFFAE1 .space 1 RAM_hi:00FFFAE2 .space 1 RAM_hi:00FFFAE3 .space 1 RAM_hi:00FFFAE4 .space 1 RAM_hi:00FFFAE5 .space 1 RAM_hi:00FFFAE6 .space 1 RAM_hi:00FFFAE7 .space 1 RAM_hi:00FFFAE8 .space 1 RAM_hi:00FFFAE9 .space 1 RAM_hi:00FFFAEA .space 1 RAM_hi:00FFFAEB .space 1 RAM_hi:00FFFAEC .space 1 RAM_hi:00FFFAED .space 1 RAM_hi:00FFFAEE .space 1 RAM_hi:00FFFAEF .space 1 RAM_hi:00FFFAF0 .space 1 RAM_hi:00FFFAF1 .space 1 RAM_hi:00FFFAF2 .space 1 RAM_hi:00FFFAF3 .space 1 RAM_hi:00FFFAF4 .space 1 RAM_hi:00FFFAF5 .space 1 RAM_hi:00FFFAF6 .space 1 RAM_hi:00FFFAF7 .space 1 RAM_hi:00FFFAF8 .space 1 RAM_hi:00FFFAF9 .space 1 RAM_hi:00FFFAFA .space 1 RAM_hi:00FFFAFB .space 1 RAM_hi:00FFFAFC .space 1 RAM_hi:00FFFAFD .space 1 RAM_hi:00FFFAFE .space 1 RAM_hi:00FFFAFF .space 1 RAM_hi:00FFFB00 .space 1 RAM_hi:00FFFB01 .space 1 RAM_hi:00FFFB02 .space 1 RAM_hi:00FFFB03 .space 1 RAM_hi:00FFFB04 .space 1 RAM_hi:00FFFB05 .space 1 RAM_hi:00FFFB06 .space 1 RAM_hi:00FFFB07 .space 1 RAM_hi:00FFFB08 .space 1 RAM_hi:00FFFB09 .space 1 RAM_hi:00FFFB0A .space 1 RAM_hi:00FFFB0B .space 1 RAM_hi:00FFFB0C .space 1 RAM_hi:00FFFB0D .space 1 RAM_hi:00FFFB0E .space 1 RAM_hi:00FFFB0F .space 1 RAM_hi:00FFFB10 .space 1 RAM_hi:00FFFB11 .space 1 RAM_hi:00FFFB12 .space 1 RAM_hi:00FFFB13 .space 1 RAM_hi:00FFFB14 .space 1 RAM_hi:00FFFB15 .space 1 RAM_hi:00FFFB16 .space 1 RAM_hi:00FFFB17 .space 1 RAM_hi:00FFFB18 .space 1 RAM_hi:00FFFB19 .space 1 RAM_hi:00FFFB1A .space 1 RAM_hi:00FFFB1B .space 1 RAM_hi:00FFFB1C .space 1 RAM_hi:00FFFB1D .space 1 RAM_hi:00FFFB1E .space 1 RAM_hi:00FFFB1F .space 1 RAM_hi:00FFFB20 .space 1 RAM_hi:00FFFB21 .space 1 RAM_hi:00FFFB22 .space 1 RAM_hi:00FFFB23 .space 1 RAM_hi:00FFFB24 .space 1 RAM_hi:00FFFB25 .space 1 RAM_hi:00FFFB26 .space 1 RAM_hi:00FFFB27 .space 1 RAM_hi:00FFFB28 .space 1 RAM_hi:00FFFB29 .space 1 RAM_hi:00FFFB2A .space 1 RAM_hi:00FFFB2B .space 1 RAM_hi:00FFFB2C .space 1 RAM_hi:00FFFB2D .space 1 RAM_hi:00FFFB2E .space 1 RAM_hi:00FFFB2F .space 1 RAM_hi:00FFFB30 .space 1 RAM_hi:00FFFB31 .space 1 RAM_hi:00FFFB32 .space 1 RAM_hi:00FFFB33 .space 1 RAM_hi:00FFFB34 .space 1 RAM_hi:00FFFB35 .space 1 RAM_hi:00FFFB36 .space 1 RAM_hi:00FFFB37 .space 1 RAM_hi:00FFFB38 .space 1 RAM_hi:00FFFB39 .space 1 RAM_hi:00FFFB3A .space 1 RAM_hi:00FFFB3B .space 1 RAM_hi:00FFFB3C .space 1 RAM_hi:00FFFB3D .space 1 RAM_hi:00FFFB3E .space 1 RAM_hi:00FFFB3F .space 1 RAM_hi:00FFFB40 .space 1 RAM_hi:00FFFB41 .space 1 RAM_hi:00FFFB42 .space 1 RAM_hi:00FFFB43 .space 1 RAM_hi:00FFFB44 .space 1 RAM_hi:00FFFB45 .space 1 RAM_hi:00FFFB46 .space 1 RAM_hi:00FFFB47 .space 1 RAM_hi:00FFFB48 .space 1 RAM_hi:00FFFB49 .space 1 RAM_hi:00FFFB4A .space 1 RAM_hi:00FFFB4B .space 1 RAM_hi:00FFFB4C .space 1 RAM_hi:00FFFB4D .space 1 RAM_hi:00FFFB4E .space 1 RAM_hi:00FFFB4F .space 1 RAM_hi:00FFFB50 .space 1 RAM_hi:00FFFB51 .space 1 RAM_hi:00FFFB52 .space 1 RAM_hi:00FFFB53 .space 1 RAM_hi:00FFFB54 .space 1 RAM_hi:00FFFB55 .space 1 RAM_hi:00FFFB56 .space 1 RAM_hi:00FFFB57 .space 1 RAM_hi:00FFFB58 .space 1 RAM_hi:00FFFB59 .space 1 RAM_hi:00FFFB5A .space 1 RAM_hi:00FFFB5B .space 1 RAM_hi:00FFFB5C .space 1 RAM_hi:00FFFB5D .space 1 RAM_hi:00FFFB5E .space 1 RAM_hi:00FFFB5F .space 1 RAM_hi:00FFFB60 .space 1 RAM_hi:00FFFB61 .space 1 RAM_hi:00FFFB62 .space 1 RAM_hi:00FFFB63 .space 1 RAM_hi:00FFFB64 .space 1 RAM_hi:00FFFB65 .space 1 RAM_hi:00FFFB66 .space 1 RAM_hi:00FFFB67 .space 1 RAM_hi:00FFFB68 .space 1 RAM_hi:00FFFB69 .space 1 RAM_hi:00FFFB6A .space 1 RAM_hi:00FFFB6B .space 1 RAM_hi:00FFFB6C .space 1 RAM_hi:00FFFB6D .space 1 RAM_hi:00FFFB6E .space 1 RAM_hi:00FFFB6F .space 1 RAM_hi:00FFFB70 .space 1 RAM_hi:00FFFB71 .space 1 RAM_hi:00FFFB72 .space 1 RAM_hi:00FFFB73 .space 1 RAM_hi:00FFFB74 .space 1 RAM_hi:00FFFB75 .space 1 RAM_hi:00FFFB76 .space 1 RAM_hi:00FFFB77 .space 1 RAM_hi:00FFFB78 .space 1 RAM_hi:00FFFB79 .space 1 RAM_hi:00FFFB7A .space 1 RAM_hi:00FFFB7B .space 1 RAM_hi:00FFFB7C .space 1 RAM_hi:00FFFB7D .space 1 RAM_hi:00FFFB7E .space 1 RAM_hi:00FFFB7F .space 1 RAM_hi:00FFFB80 .space 1 RAM_hi:00FFFB81 .space 1 RAM_hi:00FFFB82 .space 1 RAM_hi:00FFFB83 .space 1 RAM_hi:00FFFB84 .space 1 RAM_hi:00FFFB85 .space 1 RAM_hi:00FFFB86 .space 1 RAM_hi:00FFFB87 .space 1 RAM_hi:00FFFB88 .space 1 RAM_hi:00FFFB89 .space 1 RAM_hi:00FFFB8A .space 1 RAM_hi:00FFFB8B .space 1 RAM_hi:00FFFB8C .space 1 RAM_hi:00FFFB8D .space 1 RAM_hi:00FFFB8E .space 1 RAM_hi:00FFFB8F .space 1 RAM_hi:00FFFB90 .space 1 RAM_hi:00FFFB91 .space 1 RAM_hi:00FFFB92 .space 1 RAM_hi:00FFFB93 .space 1 RAM_hi:00FFFB94 .space 1 RAM_hi:00FFFB95 .space 1 RAM_hi:00FFFB96 .space 1 RAM_hi:00FFFB97 .space 1 RAM_hi:00FFFB98 .space 1 RAM_hi:00FFFB99 .space 1 RAM_hi:00FFFB9A .space 1 RAM_hi:00FFFB9B .space 1 RAM_hi:00FFFB9C .space 1 RAM_hi:00FFFB9D .space 1 RAM_hi:00FFFB9E .space 1 RAM_hi:00FFFB9F .space 1 RAM_hi:00FFFBA0 .space 1 RAM_hi:00FFFBA1 .space 1 RAM_hi:00FFFBA2 .space 1 RAM_hi:00FFFBA3 .space 1 RAM_hi:00FFFBA4 .space 1 RAM_hi:00FFFBA5 .space 1 RAM_hi:00FFFBA6 .space 1 RAM_hi:00FFFBA7 .space 1 RAM_hi:00FFFBA8 .space 1 RAM_hi:00FFFBA9 .space 1 RAM_hi:00FFFBAA .space 1 RAM_hi:00FFFBAB .space 1 RAM_hi:00FFFBAC .space 1 RAM_hi:00FFFBAD .space 1 RAM_hi:00FFFBAE .space 1 RAM_hi:00FFFBAF .space 1 RAM_hi:00FFFBB0 .space 1 RAM_hi:00FFFBB1 .space 1 RAM_hi:00FFFBB2 .space 1 RAM_hi:00FFFBB3 .space 1 RAM_hi:00FFFBB4 .space 1 RAM_hi:00FFFBB5 .space 1 RAM_hi:00FFFBB6 .space 1 RAM_hi:00FFFBB7 .space 1 RAM_hi:00FFFBB8 .space 1 RAM_hi:00FFFBB9 .space 1 RAM_hi:00FFFBBA .space 1 RAM_hi:00FFFBBB .space 1 RAM_hi:00FFFBBC .space 1 RAM_hi:00FFFBBD .space 1 RAM_hi:00FFFBBE .space 1 RAM_hi:00FFFBBF .space 1 RAM_hi:00FFFBC0 .space 1 RAM_hi:00FFFBC1 .space 1 RAM_hi:00FFFBC2 .space 1 RAM_hi:00FFFBC3 .space 1 RAM_hi:00FFFBC4 .space 1 RAM_hi:00FFFBC5 .space 1 RAM_hi:00FFFBC6 .space 1 RAM_hi:00FFFBC7 .space 1 RAM_hi:00FFFBC8 .space 1 RAM_hi:00FFFBC9 .space 1 RAM_hi:00FFFBCA .space 1 RAM_hi:00FFFBCB .space 1 RAM_hi:00FFFBCC .space 1 RAM_hi:00FFFBCD .space 1 RAM_hi:00FFFBCE .space 1 RAM_hi:00FFFBCF .space 1 RAM_hi:00FFFBD0 .space 1 RAM_hi:00FFFBD1 .space 1 RAM_hi:00FFFBD2 .space 1 RAM_hi:00FFFBD3 .space 1 RAM_hi:00FFFBD4 .space 1 RAM_hi:00FFFBD5 .space 1 RAM_hi:00FFFBD6 .space 1 RAM_hi:00FFFBD7 .space 1 RAM_hi:00FFFBD8 .space 1 RAM_hi:00FFFBD9 .space 1 RAM_hi:00FFFBDA .space 1 RAM_hi:00FFFBDB .space 1 RAM_hi:00FFFBDC .space 1 RAM_hi:00FFFBDD .space 1 RAM_hi:00FFFBDE .space 1 RAM_hi:00FFFBDF .space 1 RAM_hi:00FFFBE0 .space 1 RAM_hi:00FFFBE1 .space 1 RAM_hi:00FFFBE2 .space 1 RAM_hi:00FFFBE3 .space 1 RAM_hi:00FFFBE4 .space 1 RAM_hi:00FFFBE5 .space 1 RAM_hi:00FFFBE6 .space 1 RAM_hi:00FFFBE7 .space 1 RAM_hi:00FFFBE8 .space 1 RAM_hi:00FFFBE9 .space 1 RAM_hi:00FFFBEA .space 1 RAM_hi:00FFFBEB .space 1 RAM_hi:00FFFBEC .space 1 RAM_hi:00FFFBED .space 1 RAM_hi:00FFFBEE .space 1 RAM_hi:00FFFBEF .space 1 RAM_hi:00FFFBF0 .space 1 RAM_hi:00FFFBF1 .space 1 RAM_hi:00FFFBF2 .space 1 RAM_hi:00FFFBF3 .space 1 RAM_hi:00FFFBF4 .space 1 RAM_hi:00FFFBF5 .space 1 RAM_hi:00FFFBF6 .space 1 RAM_hi:00FFFBF7 .space 1 RAM_hi:00FFFBF8 .space 1 RAM_hi:00FFFBF9 .space 1 RAM_hi:00FFFBFA .space 1 RAM_hi:00FFFBFB .space 1 RAM_hi:00FFFBFC .space 1 RAM_hi:00FFFBFD .space 1 RAM_hi:00FFFBFE .space 1 RAM_hi:00FFFBFF .space 1 RAM_hi:00FFFC00 .space 1 RAM_hi:00FFFC01 .space 1 RAM_hi:00FFFC02 .space 1 RAM_hi:00FFFC03 .space 1 RAM_hi:00FFFC04 .space 1 RAM_hi:00FFFC05 .space 1 RAM_hi:00FFFC06 .space 1 RAM_hi:00FFFC07 .space 1 RAM_hi:00FFFC08 .space 1 RAM_hi:00FFFC09 .space 1 RAM_hi:00FFFC0A .space 1 RAM_hi:00FFFC0B .space 1 RAM_hi:00FFFC0C .space 1 RAM_hi:00FFFC0D .space 1 RAM_hi:00FFFC0E .space 1 RAM_hi:00FFFC0F .space 1 RAM_hi:00FFFC10 .space 1 RAM_hi:00FFFC11 .space 1 RAM_hi:00FFFC12 .space 1 RAM_hi:00FFFC13 .space 1 RAM_hi:00FFFC14 .space 1 RAM_hi:00FFFC15 .space 1 RAM_hi:00FFFC16 .space 1 RAM_hi:00FFFC17 .space 1 RAM_hi:00FFFC18 .space 1 RAM_hi:00FFFC19 .space 1 RAM_hi:00FFFC1A .space 1 RAM_hi:00FFFC1B .space 1 RAM_hi:00FFFC1C .space 1 RAM_hi:00FFFC1D .space 1 RAM_hi:00FFFC1E .space 1 RAM_hi:00FFFC1F .space 1 RAM_hi:00FFFC20 .space 1 RAM_hi:00FFFC21 .space 1 RAM_hi:00FFFC22 .space 1 RAM_hi:00FFFC23 .space 1 RAM_hi:00FFFC24 .space 1 RAM_hi:00FFFC25 .space 1 RAM_hi:00FFFC26 .space 1 RAM_hi:00FFFC27 .space 1 RAM_hi:00FFFC28 .space 1 RAM_hi:00FFFC29 .space 1 RAM_hi:00FFFC2A .space 1 RAM_hi:00FFFC2B .space 1 RAM_hi:00FFFC2C .space 1 RAM_hi:00FFFC2D .space 1 RAM_hi:00FFFC2E .space 1 RAM_hi:00FFFC2F .space 1 RAM_hi:00FFFC30 .space 1 RAM_hi:00FFFC31 .space 1 RAM_hi:00FFFC32 .space 1 RAM_hi:00FFFC33 .space 1 RAM_hi:00FFFC34 .space 1 RAM_hi:00FFFC35 .space 1 RAM_hi:00FFFC36 .space 1 RAM_hi:00FFFC37 .space 1 RAM_hi:00FFFC38 .space 1 RAM_hi:00FFFC39 .space 1 RAM_hi:00FFFC3A .space 1 RAM_hi:00FFFC3B .space 1 RAM_hi:00FFFC3C .space 1 RAM_hi:00FFFC3D .space 1 RAM_hi:00FFFC3E .space 1 RAM_hi:00FFFC3F .space 1 RAM_hi:00FFFC40 .space 1 RAM_hi:00FFFC41 .space 1 RAM_hi:00FFFC42 .space 1 RAM_hi:00FFFC43 .space 1 RAM_hi:00FFFC44 .space 1 RAM_hi:00FFFC45 .space 1 RAM_hi:00FFFC46 .space 1 RAM_hi:00FFFC47 .space 1 RAM_hi:00FFFC48 .space 1 RAM_hi:00FFFC49 .space 1 RAM_hi:00FFFC4A .space 1 RAM_hi:00FFFC4B .space 1 RAM_hi:00FFFC4C .space 1 RAM_hi:00FFFC4D .space 1 RAM_hi:00FFFC4E .space 1 RAM_hi:00FFFC4F .space 1 RAM_hi:00FFFC50 .space 1 RAM_hi:00FFFC51 .space 1 RAM_hi:00FFFC52 .space 1 RAM_hi:00FFFC53 .space 1 RAM_hi:00FFFC54 .space 1 RAM_hi:00FFFC55 .space 1 RAM_hi:00FFFC56 .space 1 RAM_hi:00FFFC57 .space 1 RAM_hi:00FFFC58 .space 1 RAM_hi:00FFFC59 .space 1 RAM_hi:00FFFC5A .space 1 RAM_hi:00FFFC5B .space 1 RAM_hi:00FFFC5C .space 1 RAM_hi:00FFFC5D .space 1 RAM_hi:00FFFC5E .space 1 RAM_hi:00FFFC5F .space 1 RAM_hi:00FFFC60 .space 1 RAM_hi:00FFFC61 .space 1 RAM_hi:00FFFC62 .space 1 RAM_hi:00FFFC63 .space 1 RAM_hi:00FFFC64 .space 1 RAM_hi:00FFFC65 .space 1 RAM_hi:00FFFC66 .space 1 RAM_hi:00FFFC67 .space 1 RAM_hi:00FFFC68 .space 1 RAM_hi:00FFFC69 .space 1 RAM_hi:00FFFC6A .space 1 RAM_hi:00FFFC6B .space 1 RAM_hi:00FFFC6C .space 1 RAM_hi:00FFFC6D .space 1 RAM_hi:00FFFC6E .space 1 RAM_hi:00FFFC6F .space 1 RAM_hi:00FFFC70 .space 1 RAM_hi:00FFFC71 .space 1 RAM_hi:00FFFC72 .space 1 RAM_hi:00FFFC73 .space 1 RAM_hi:00FFFC74 .space 1 RAM_hi:00FFFC75 .space 1 RAM_hi:00FFFC76 .space 1 RAM_hi:00FFFC77 .space 1 RAM_hi:00FFFC78 .space 1 RAM_hi:00FFFC79 .space 1 RAM_hi:00FFFC7A .space 1 RAM_hi:00FFFC7B .space 1 RAM_hi:00FFFC7C .space 1 RAM_hi:00FFFC7D .space 1 RAM_hi:00FFFC7E .space 1 RAM_hi:00FFFC7F .space 1 RAM_hi:00FFFC80 .space 1 RAM_hi:00FFFC81 .space 1 RAM_hi:00FFFC82 .space 1 RAM_hi:00FFFC83 .space 1 RAM_hi:00FFFC84 .space 1 RAM_hi:00FFFC85 .space 1 RAM_hi:00FFFC86 .space 1 RAM_hi:00FFFC87 .space 1 RAM_hi:00FFFC88 .space 1 RAM_hi:00FFFC89 .space 1 RAM_hi:00FFFC8A .space 1 RAM_hi:00FFFC8B .space 1 RAM_hi:00FFFC8C .space 1 RAM_hi:00FFFC8D .space 1 RAM_hi:00FFFC8E .space 1 RAM_hi:00FFFC8F .space 1 RAM_hi:00FFFC90 .space 1 RAM_hi:00FFFC91 .space 1 RAM_hi:00FFFC92 .space 1 RAM_hi:00FFFC93 .space 1 RAM_hi:00FFFC94 .space 1 RAM_hi:00FFFC95 .space 1 RAM_hi:00FFFC96 .space 1 RAM_hi:00FFFC97 .space 1 RAM_hi:00FFFC98 .space 1 RAM_hi:00FFFC99 .space 1 RAM_hi:00FFFC9A .space 1 RAM_hi:00FFFC9B .space 1 RAM_hi:00FFFC9C .space 1 RAM_hi:00FFFC9D .space 1 RAM_hi:00FFFC9E .space 1 RAM_hi:00FFFC9F .space 1 RAM_hi:00FFFCA0 .space 1 RAM_hi:00FFFCA1 .space 1 RAM_hi:00FFFCA2 .space 1 RAM_hi:00FFFCA3 .space 1 RAM_hi:00FFFCA4 .space 1 RAM_hi:00FFFCA5 .space 1 RAM_hi:00FFFCA6 .space 1 RAM_hi:00FFFCA7 .space 1 RAM_hi:00FFFCA8 .space 1 RAM_hi:00FFFCA9 .space 1 RAM_hi:00FFFCAA .space 1 RAM_hi:00FFFCAB .space 1 RAM_hi:00FFFCAC .space 1 RAM_hi:00FFFCAD .space 1 RAM_hi:00FFFCAE .space 1 RAM_hi:00FFFCAF .space 1 RAM_hi:00FFFCB0 .space 1 RAM_hi:00FFFCB1 .space 1 RAM_hi:00FFFCB2 .space 1 RAM_hi:00FFFCB3 .space 1 RAM_hi:00FFFCB4 .space 1 RAM_hi:00FFFCB5 .space 1 RAM_hi:00FFFCB6 .space 1 RAM_hi:00FFFCB7 .space 1 RAM_hi:00FFFCB8 .space 1 RAM_hi:00FFFCB9 .space 1 RAM_hi:00FFFCBA .space 1 RAM_hi:00FFFCBB .space 1 RAM_hi:00FFFCBC .space 1 RAM_hi:00FFFCBD .space 1 RAM_hi:00FFFCBE .space 1 RAM_hi:00FFFCBF .space 1 RAM_hi:00FFFCC0 .space 1 RAM_hi:00FFFCC1 .space 1 RAM_hi:00FFFCC2 .space 1 RAM_hi:00FFFCC3 .space 1 RAM_hi:00FFFCC4 .space 1 RAM_hi:00FFFCC5 .space 1 RAM_hi:00FFFCC6 .space 1 RAM_hi:00FFFCC7 .space 1 RAM_hi:00FFFCC8 .space 1 RAM_hi:00FFFCC9 .space 1 RAM_hi:00FFFCCA .space 1 RAM_hi:00FFFCCB .space 1 RAM_hi:00FFFCCC .space 1 RAM_hi:00FFFCCD .space 1 RAM_hi:00FFFCCE .space 1 RAM_hi:00FFFCCF .space 1 RAM_hi:00FFFCD0 .space 1 RAM_hi:00FFFCD1 .space 1 RAM_hi:00FFFCD2 .space 1 RAM_hi:00FFFCD3 .space 1 RAM_hi:00FFFCD4 .space 1 RAM_hi:00FFFCD5 .space 1 RAM_hi:00FFFCD6 .space 1 RAM_hi:00FFFCD7 .space 1 RAM_hi:00FFFCD8 .space 1 RAM_hi:00FFFCD9 .space 1 RAM_hi:00FFFCDA .space 1 RAM_hi:00FFFCDB .space 1 RAM_hi:00FFFCDC .space 1 RAM_hi:00FFFCDD .space 1 RAM_hi:00FFFCDE .space 1 RAM_hi:00FFFCDF .space 1 RAM_hi:00FFFCE0 .space 1 RAM_hi:00FFFCE1 .space 1 RAM_hi:00FFFCE2 .space 1 RAM_hi:00FFFCE3 .space 1 RAM_hi:00FFFCE4 .space 1 RAM_hi:00FFFCE5 .space 1 RAM_hi:00FFFCE6 .space 1 RAM_hi:00FFFCE7 .space 1 RAM_hi:00FFFCE8 .space 1 RAM_hi:00FFFCE9 .space 1 RAM_hi:00FFFCEA .space 1 RAM_hi:00FFFCEB .space 1 RAM_hi:00FFFCEC .space 1 RAM_hi:00FFFCED .space 1 RAM_hi:00FFFCEE .space 1 RAM_hi:00FFFCEF .space 1 RAM_hi:00FFFCF0 .space 1 RAM_hi:00FFFCF1 .space 1 RAM_hi:00FFFCF2 .space 1 RAM_hi:00FFFCF3 .space 1 RAM_hi:00FFFCF4 .space 1 RAM_hi:00FFFCF5 .space 1 RAM_hi:00FFFCF6 .space 1 RAM_hi:00FFFCF7 .space 1 RAM_hi:00FFFCF8 .space 1 RAM_hi:00FFFCF9 .space 1 RAM_hi:00FFFCFA .space 1 RAM_hi:00FFFCFB .space 1 RAM_hi:00FFFCFC .space 1 RAM_hi:00FFFCFD .space 1 RAM_hi:00FFFCFE .space 1 RAM_hi:00FFFCFF .space 1 RAM_hi:00FFFD00 .space 1 RAM_hi:00FFFD01 .space 1 RAM_hi:00FFFD02 .space 1 RAM_hi:00FFFD03 .space 1 RAM_hi:00FFFD04 .space 1 RAM_hi:00FFFD05 .space 1 RAM_hi:00FFFD06 .space 1 RAM_hi:00FFFD07 .space 1 RAM_hi:00FFFD08 .space 1 RAM_hi:00FFFD09 .space 1 RAM_hi:00FFFD0A .space 1 RAM_hi:00FFFD0B .space 1 RAM_hi:00FFFD0C .space 1 RAM_hi:00FFFD0D .space 1 RAM_hi:00FFFD0E .space 1 RAM_hi:00FFFD0F .space 1 RAM_hi:00FFFD10 .space 1 RAM_hi:00FFFD11 .space 1 RAM_hi:00FFFD12 .space 1 RAM_hi:00FFFD13 .space 1 RAM_hi:00FFFD14 .space 1 RAM_hi:00FFFD15 .space 1 RAM_hi:00FFFD16 .space 1 RAM_hi:00FFFD17 .space 1 RAM_hi:00FFFD18 .space 1 RAM_hi:00FFFD19 .space 1 RAM_hi:00FFFD1A .space 1 RAM_hi:00FFFD1B .space 1 RAM_hi:00FFFD1C .space 1 RAM_hi:00FFFD1D .space 1 RAM_hi:00FFFD1E .space 1 RAM_hi:00FFFD1F .space 1 RAM_hi:00FFFD20 .space 1 RAM_hi:00FFFD21 .space 1 RAM_hi:00FFFD22 .space 1 RAM_hi:00FFFD23 .space 1 RAM_hi:00FFFD24 .space 1 RAM_hi:00FFFD25 .space 1 RAM_hi:00FFFD26 .space 1 RAM_hi:00FFFD27 .space 1 RAM_hi:00FFFD28 .space 1 RAM_hi:00FFFD29 .space 1 RAM_hi:00FFFD2A .space 1 RAM_hi:00FFFD2B .space 1 RAM_hi:00FFFD2C .space 1 RAM_hi:00FFFD2D .space 1 RAM_hi:00FFFD2E .space 1 RAM_hi:00FFFD2F .space 1 RAM_hi:00FFFD30 .space 1 RAM_hi:00FFFD31 .space 1 RAM_hi:00FFFD32 .space 1 RAM_hi:00FFFD33 .space 1 RAM_hi:00FFFD34 .space 1 RAM_hi:00FFFD35 .space 1 RAM_hi:00FFFD36 .space 1 RAM_hi:00FFFD37 .space 1 RAM_hi:00FFFD38 .space 1 RAM_hi:00FFFD39 .space 1 RAM_hi:00FFFD3A .space 1 RAM_hi:00FFFD3B .space 1 RAM_hi:00FFFD3C .space 1 RAM_hi:00FFFD3D .space 1 RAM_hi:00FFFD3E .space 1 RAM_hi:00FFFD3F .space 1 RAM_hi:00FFFD40 .space 1 RAM_hi:00FFFD41 .space 1 RAM_hi:00FFFD42 .space 1 RAM_hi:00FFFD43 .space 1 RAM_hi:00FFFD44 .space 1 RAM_hi:00FFFD45 .space 1 RAM_hi:00FFFD46 .space 1 RAM_hi:00FFFD47 .space 1 RAM_hi:00FFFD48 .space 1 RAM_hi:00FFFD49 .space 1 RAM_hi:00FFFD4A .space 1 RAM_hi:00FFFD4B .space 1 RAM_hi:00FFFD4C .space 1 RAM_hi:00FFFD4D .space 1 RAM_hi:00FFFD4E .space 1 RAM_hi:00FFFD4F .space 1 RAM_hi:00FFFD50 .space 1 RAM_hi:00FFFD51 .space 1 RAM_hi:00FFFD52 .space 1 RAM_hi:00FFFD53 .space 1 RAM_hi:00FFFD54 .space 1 RAM_hi:00FFFD55 .space 1 RAM_hi:00FFFD56 .space 1 RAM_hi:00FFFD57 .space 1 RAM_hi:00FFFD58 .space 1 RAM_hi:00FFFD59 .space 1 RAM_hi:00FFFD5A .space 1 RAM_hi:00FFFD5B .space 1 RAM_hi:00FFFD5C .space 1 RAM_hi:00FFFD5D .space 1 RAM_hi:00FFFD5E .space 1 RAM_hi:00FFFD5F .space 1 RAM_hi:00FFFD60 .space 1 RAM_hi:00FFFD61 .space 1 RAM_hi:00FFFD62 .space 1 RAM_hi:00FFFD63 .space 1 RAM_hi:00FFFD64 .space 1 RAM_hi:00FFFD65 .space 1 RAM_hi:00FFFD66 .space 1 RAM_hi:00FFFD67 .space 1 RAM_hi:00FFFD68 .space 1 RAM_hi:00FFFD69 .space 1 RAM_hi:00FFFD6A .space 1 RAM_hi:00FFFD6B .space 1 RAM_hi:00FFFD6C .space 1 RAM_hi:00FFFD6D .space 1 RAM_hi:00FFFD6E .space 1 RAM_hi:00FFFD6F .space 1 RAM_hi:00FFFD70 .space 1 RAM_hi:00FFFD71 .space 1 RAM_hi:00FFFD72 .space 1 RAM_hi:00FFFD73 .space 1 RAM_hi:00FFFD74 .space 1 RAM_hi:00FFFD75 .space 1 RAM_hi:00FFFD76 .space 1 RAM_hi:00FFFD77 .space 1 RAM_hi:00FFFD78 .space 1 RAM_hi:00FFFD79 .space 1 RAM_hi:00FFFD7A .space 1 RAM_hi:00FFFD7B .space 1 RAM_hi:00FFFD7C .space 1 RAM_hi:00FFFD7D .space 1 RAM_hi:00FFFD7E .space 1 RAM_hi:00FFFD7F .space 1 RAM_hi:00FFFD80 .space 1 RAM_hi:00FFFD81 .space 1 RAM_hi:00FFFD82 .space 1 RAM_hi:00FFFD83 .space 1 RAM_hi:00FFFD84 .space 1 RAM_hi:00FFFD85 .space 1 RAM_hi:00FFFD86 .space 1 RAM_hi:00FFFD87 .space 1 RAM_hi:00FFFD88 .space 1 RAM_hi:00FFFD89 .space 1 RAM_hi:00FFFD8A .space 1 RAM_hi:00FFFD8B .space 1 RAM_hi:00FFFD8C .space 1 RAM_hi:00FFFD8D .space 1 RAM_hi:00FFFD8E .space 1 RAM_hi:00FFFD8F .space 1 RAM_hi:00FFFD90 .space 1 RAM_hi:00FFFD91 .space 1 RAM_hi:00FFFD92 .space 1 RAM_hi:00FFFD93 .space 1 RAM_hi:00FFFD94 .space 1 RAM_hi:00FFFD95 .space 1 RAM_hi:00FFFD96 .space 1 RAM_hi:00FFFD97 .space 1 RAM_hi:00FFFD98 .space 1 RAM_hi:00FFFD99 .space 1 RAM_hi:00FFFD9A .space 1 RAM_hi:00FFFD9B .space 1 RAM_hi:00FFFD9C .space 1 RAM_hi:00FFFD9D .space 1 RAM_hi:00FFFD9E .space 1 RAM_hi:00FFFD9F .space 1 RAM_hi:00FFFDA0 .space 1 RAM_hi:00FFFDA1 .space 1 RAM_hi:00FFFDA2 .space 1 RAM_hi:00FFFDA3 .space 1 RAM_hi:00FFFDA4 .space 1 RAM_hi:00FFFDA5 .space 1 RAM_hi:00FFFDA6 .space 1 RAM_hi:00FFFDA7 .space 1 RAM_hi:00FFFDA8 .space 1 RAM_hi:00FFFDA9 .space 1 RAM_hi:00FFFDAA .space 1 RAM_hi:00FFFDAB .space 1 RAM_hi:00FFFDAC .space 1 RAM_hi:00FFFDAD .space 1 RAM_hi:00FFFDAE .space 1 RAM_hi:00FFFDAF .space 1 RAM_hi:00FFFDB0 .space 1 RAM_hi:00FFFDB1 .space 1 RAM_hi:00FFFDB2 .space 1 RAM_hi:00FFFDB3 .space 1 RAM_hi:00FFFDB4 .space 1 RAM_hi:00FFFDB5 .space 1 RAM_hi:00FFFDB6 .space 1 RAM_hi:00FFFDB7 .space 1 RAM_hi:00FFFDB8 .space 1 RAM_hi:00FFFDB9 .space 1 RAM_hi:00FFFDBA .space 1 RAM_hi:00FFFDBB .space 1 RAM_hi:00FFFDBC .space 1 RAM_hi:00FFFDBD .space 1 RAM_hi:00FFFDBE .space 1 RAM_hi:00FFFDBF .space 1 RAM_hi:00FFFDC0 .space 1 RAM_hi:00FFFDC1 .space 1 RAM_hi:00FFFDC2 .space 1 RAM_hi:00FFFDC3 .space 1 RAM_hi:00FFFDC4 .space 1 RAM_hi:00FFFDC5 .space 1 RAM_hi:00FFFDC6 .space 1 RAM_hi:00FFFDC7 .space 1 RAM_hi:00FFFDC8 .space 1 RAM_hi:00FFFDC9 .space 1 RAM_hi:00FFFDCA .space 1 RAM_hi:00FFFDCB .space 1 RAM_hi:00FFFDCC .space 1 RAM_hi:00FFFDCD .space 1 RAM_hi:00FFFDCE .space 1 RAM_hi:00FFFDCF .space 1 RAM_hi:00FFFDD0 .space 1 RAM_hi:00FFFDD1 .space 1 RAM_hi:00FFFDD2 .space 1 RAM_hi:00FFFDD3 .space 1 RAM_hi:00FFFDD4 .space 1 RAM_hi:00FFFDD5 .space 1 RAM_hi:00FFFDD6 .space 1 RAM_hi:00FFFDD7 .space 1 RAM_hi:00FFFDD8 .space 1 RAM_hi:00FFFDD9 .space 1 RAM_hi:00FFFDDA .space 1 RAM_hi:00FFFDDB .space 1 RAM_hi:00FFFDDC .space 1 RAM_hi:00FFFDDD .space 1 RAM_hi:00FFFDDE .space 1 RAM_hi:00FFFDDF .space 1 RAM_hi:00FFFDE0 .space 1 RAM_hi:00FFFDE1 .space 1 RAM_hi:00FFFDE2 .space 1 RAM_hi:00FFFDE3 .space 1 RAM_hi:00FFFDE4 .space 1 RAM_hi:00FFFDE5 .space 1 RAM_hi:00FFFDE6 .space 1 RAM_hi:00FFFDE7 .space 1 RAM_hi:00FFFDE8 .space 1 RAM_hi:00FFFDE9 .space 1 RAM_hi:00FFFDEA .space 1 RAM_hi:00FFFDEB .space 1 RAM_hi:00FFFDEC .space 1 RAM_hi:00FFFDED .space 1 RAM_hi:00FFFDEE .space 1 RAM_hi:00FFFDEF .space 1 RAM_hi:00FFFDF0 .space 1 RAM_hi:00FFFDF1 .space 1 RAM_hi:00FFFDF2 .space 1 RAM_hi:00FFFDF3 .space 1 RAM_hi:00FFFDF4 .space 1 RAM_hi:00FFFDF5 .space 1 RAM_hi:00FFFDF6 .space 1 RAM_hi:00FFFDF7 .space 1 RAM_hi:00FFFDF8 .space 1 RAM_hi:00FFFDF9 .space 1 RAM_hi:00FFFDFA .space 1 RAM_hi:00FFFDFB .space 1 RAM_hi:00FFFDFC .space 1 RAM_hi:00FFFDFD .space 1 RAM_hi:00FFFDFE .space 1 RAM_hi:00FFFDFF .space 1 RAM_hi:00FFFE00 .space 1 RAM_hi:00FFFE01 .space 1 RAM_hi:00FFFE02 .space 1 RAM_hi:00FFFE03 .space 1 RAM_hi:00FFFE04 .space 1 RAM_hi:00FFFE05 .space 1 RAM_hi:00FFFE06 .space 1 RAM_hi:00FFFE07 .space 1 RAM_hi:00FFFE08 .space 1 RAM_hi:00FFFE09 .space 1 RAM_hi:00FFFE0A .space 1 RAM_hi:00FFFE0B .space 1 RAM_hi:00FFFE0C .space 1 RAM_hi:00FFFE0D .space 1 RAM_hi:00FFFE0E .space 1 RAM_hi:00FFFE0F .space 1 RAM_hi:00FFFE10 .space 1 RAM_hi:00FFFE11 .space 1 RAM_hi:00FFFE12 .space 1 RAM_hi:00FFFE13 .space 1 RAM_hi:00FFFE14 .space 1 RAM_hi:00FFFE15 .space 1 RAM_hi:00FFFE16 .space 1 RAM_hi:00FFFE17 .space 1 RAM_hi:00FFFE18 .space 1 RAM_hi:00FFFE19 .space 1 RAM_hi:00FFFE1A .space 1 RAM_hi:00FFFE1B .space 1 RAM_hi:00FFFE1C .space 1 RAM_hi:00FFFE1D .space 1 RAM_hi:00FFFE1E .space 1 RAM_hi:00FFFE1F .space 1 RAM_hi:00FFFE20 .space 1 RAM_hi:00FFFE21 .space 1 RAM_hi:00FFFE22 .space 1 RAM_hi:00FFFE23 .space 1 RAM_hi:00FFFE24 .space 1 RAM_hi:00FFFE25 .space 1 RAM_hi:00FFFE26 .space 1 RAM_hi:00FFFE27 .space 1 RAM_hi:00FFFE28 .space 1 RAM_hi:00FFFE29 .space 1 RAM_hi:00FFFE2A .space 1 RAM_hi:00FFFE2B .space 1 RAM_hi:00FFFE2C .space 1 RAM_hi:00FFFE2D .space 1 RAM_hi:00FFFE2E .space 1 RAM_hi:00FFFE2F .space 1 RAM_hi:00FFFE30 .space 1 RAM_hi:00FFFE31 .space 1 RAM_hi:00FFFE32 .space 1 RAM_hi:00FFFE33 .space 1 RAM_hi:00FFFE34 .space 1 RAM_hi:00FFFE35 .space 1 RAM_hi:00FFFE36 .space 1 RAM_hi:00FFFE37 .space 1 RAM_hi:00FFFE38 .space 1 RAM_hi:00FFFE39 .space 1 RAM_hi:00FFFE3A .space 1 RAM_hi:00FFFE3B .space 1 RAM_hi:00FFFE3C .space 1 RAM_hi:00FFFE3D .space 1 RAM_hi:00FFFE3E .space 1 RAM_hi:00FFFE3F .space 1 RAM_hi:00FFFE40 .space 1 RAM_hi:00FFFE41 .space 1 RAM_hi:00FFFE42 .space 1 RAM_hi:00FFFE43 .space 1 RAM_hi:00FFFE44 .space 1 RAM_hi:00FFFE45 .space 1 RAM_hi:00FFFE46 .space 1 RAM_hi:00FFFE47 .space 1 RAM_hi:00FFFE48 .space 1 RAM_hi:00FFFE49 .space 1 RAM_hi:00FFFE4A .space 1 RAM_hi:00FFFE4B .space 1 RAM_hi:00FFFE4C .space 1 RAM_hi:00FFFE4D .space 1 RAM_hi:00FFFE4E .space 1 RAM_hi:00FFFE4F .space 1 RAM_hi:00FFFE50 .space 1 RAM_hi:00FFFE51 .space 1 RAM_hi:00FFFE52 .space 1 RAM_hi:00FFFE53 .space 1 RAM_hi:00FFFE54 .space 1 RAM_hi:00FFFE55 .space 1 RAM_hi:00FFFE56 .space 1 RAM_hi:00FFFE57 .space 1 RAM_hi:00FFFE58 .space 1 RAM_hi:00FFFE59 .space 1 RAM_hi:00FFFE5A .space 1 RAM_hi:00FFFE5B .space 1 RAM_hi:00FFFE5C .space 1 RAM_hi:00FFFE5D .space 1 RAM_hi:00FFFE5E .space 1 RAM_hi:00FFFE5F .space 1 RAM_hi:00FFFE60 .space 1 RAM_hi:00FFFE61 .space 1 RAM_hi:00FFFE62 .space 1 RAM_hi:00FFFE63 .space 1 RAM_hi:00FFFE64 .space 1 RAM_hi:00FFFE65 .space 1 RAM_hi:00FFFE66 .space 1 RAM_hi:00FFFE67 .space 1 RAM_hi:00FFFE68 .space 1 RAM_hi:00FFFE69 .space 1 RAM_hi:00FFFE6A .space 1 RAM_hi:00FFFE6B .space 1 RAM_hi:00FFFE6C .space 1 RAM_hi:00FFFE6D .space 1 RAM_hi:00FFFE6E .space 1 RAM_hi:00FFFE6F .space 1 RAM_hi:00FFFE70 .space 1 RAM_hi:00FFFE71 .space 1 RAM_hi:00FFFE72 .space 1 RAM_hi:00FFFE73 .space 1 RAM_hi:00FFFE74 .space 1 RAM_hi:00FFFE75 .space 1 RAM_hi:00FFFE76 .space 1 RAM_hi:00FFFE77 .space 1 RAM_hi:00FFFE78 .space 1 RAM_hi:00FFFE79 .space 1 RAM_hi:00FFFE7A .space 1 RAM_hi:00FFFE7B .space 1 RAM_hi:00FFFE7C .space 1 RAM_hi:00FFFE7D .space 1 RAM_hi:00FFFE7E .space 1 RAM_hi:00FFFE7F .space 1 RAM_hi:00FFFE80 .space 1 RAM_hi:00FFFE81 .space 1 RAM_hi:00FFFE82 .space 1 RAM_hi:00FFFE83 .space 1 RAM_hi:00FFFE84 .space 1 RAM_hi:00FFFE85 .space 1 RAM_hi:00FFFE86 .space 1 RAM_hi:00FFFE87 .space 1 RAM_hi:00FFFE88 .space 1 RAM_hi:00FFFE89 .space 1 RAM_hi:00FFFE8A .space 1 RAM_hi:00FFFE8B .space 1 RAM_hi:00FFFE8C .space 1 RAM_hi:00FFFE8D .space 1 RAM_hi:00FFFE8E .space 1 RAM_hi:00FFFE8F .space 1 RAM_hi:00FFFE90 .space 1 RAM_hi:00FFFE91 .space 1 RAM_hi:00FFFE92 .space 1 RAM_hi:00FFFE93 .space 1 RAM_hi:00FFFE94 .space 1 RAM_hi:00FFFE95 .space 1 RAM_hi:00FFFE96 .space 1 RAM_hi:00FFFE97 .space 1 RAM_hi:00FFFE98 .space 1 RAM_hi:00FFFE99 .space 1 RAM_hi:00FFFE9A .space 1 RAM_hi:00FFFE9B .space 1 RAM_hi:00FFFE9C .space 1 RAM_hi:00FFFE9D .space 1 RAM_hi:00FFFE9E .space 1 RAM_hi:00FFFE9F .space 1 RAM_hi:00FFFEA0 .space 1 RAM_hi:00FFFEA1 .space 1 RAM_hi:00FFFEA2 .space 1 RAM_hi:00FFFEA3 .space 1 RAM_hi:00FFFEA4 .space 1 RAM_hi:00FFFEA5 .space 1 RAM_hi:00FFFEA6 .space 1 RAM_hi:00FFFEA7 .space 1 RAM_hi:00FFFEA8 .space 1 RAM_hi:00FFFEA9 .space 1 RAM_hi:00FFFEAA .space 1 RAM_hi:00FFFEAB .space 1 RAM_hi:00FFFEAC .space 1 RAM_hi:00FFFEAD .space 1 RAM_hi:00FFFEAE .space 1 RAM_hi:00FFFEAF .space 1 RAM_hi:00FFFEB0 .space 1 RAM_hi:00FFFEB1 .space 1 RAM_hi:00FFFEB2 .space 1 RAM_hi:00FFFEB3 .space 1 RAM_hi:00FFFEB4 .space 1 RAM_hi:00FFFEB5 .space 1 RAM_hi:00FFFEB6 .space 1 RAM_hi:00FFFEB7 .space 1 RAM_hi:00FFFEB8 .space 1 RAM_hi:00FFFEB9 .space 1 RAM_hi:00FFFEBA .space 1 RAM_hi:00FFFEBB .space 1 RAM_hi:00FFFEBC .space 1 RAM_hi:00FFFEBD .space 1 RAM_hi:00FFFEBE .space 1 RAM_hi:00FFFEBF .space 1 RAM_hi:00FFFEC0 .space 1 RAM_hi:00FFFEC1 .space 1 RAM_hi:00FFFEC2 .space 1 RAM_hi:00FFFEC3 .space 1 RAM_hi:00FFFEC4 .space 1 RAM_hi:00FFFEC5 .space 1 RAM_hi:00FFFEC6 .space 1 RAM_hi:00FFFEC7 .space 1 RAM_hi:00FFFEC8 .space 1 RAM_hi:00FFFEC9 .space 1 RAM_hi:00FFFECA .space 1 RAM_hi:00FFFECB .space 1 RAM_hi:00FFFECC .space 1 RAM_hi:00FFFECD .space 1 RAM_hi:00FFFECE .space 1 RAM_hi:00FFFECF .space 1 RAM_hi:00FFFED0 .space 1 RAM_hi:00FFFED1 .space 1 RAM_hi:00FFFED2 .space 1 RAM_hi:00FFFED3 .space 1 RAM_hi:00FFFED4 .space 1 RAM_hi:00FFFED5 .space 1 RAM_hi:00FFFED6 .space 1 RAM_hi:00FFFED7 .space 1 RAM_hi:00FFFED8 .space 1 RAM_hi:00FFFED9 .space 1 RAM_hi:00FFFEDA .space 1 RAM_hi:00FFFEDB .space 1 RAM_hi:00FFFEDC .space 1 RAM_hi:00FFFEDD .space 1 RAM_hi:00FFFEDE .space 1 RAM_hi:00FFFEDF .space 1 RAM_hi:00FFFEE0 .space 1 RAM_hi:00FFFEE1 .space 1 RAM_hi:00FFFEE2 .space 1 RAM_hi:00FFFEE3 .space 1 RAM_hi:00FFFEE4 .space 1 RAM_hi:00FFFEE5 .space 1 RAM_hi:00FFFEE6 .space 1 RAM_hi:00FFFEE7 .space 1 RAM_hi:00FFFEE8 .space 1 RAM_hi:00FFFEE9 .space 1 RAM_hi:00FFFEEA .space 1 RAM_hi:00FFFEEB .space 1 RAM_hi:00FFFEEC .space 1 RAM_hi:00FFFEED .space 1 RAM_hi:00FFFEEE .space 1 RAM_hi:00FFFEEF .space 1 RAM_hi:00FFFEF0 .space 1 RAM_hi:00FFFEF1 .space 1 RAM_hi:00FFFEF2 .space 1 RAM_hi:00FFFEF3 .space 1 RAM_hi:00FFFEF4 .space 1 RAM_hi:00FFFEF5 .space 1 RAM_hi:00FFFEF6 .space 1 RAM_hi:00FFFEF7 .space 1 RAM_hi:00FFFEF8 .space 1 RAM_hi:00FFFEF9 .space 1 RAM_hi:00FFFEFA .space 1 RAM_hi:00FFFEFB .space 1 RAM_hi:00FFFEFC .space 1 RAM_hi:00FFFEFD .space 1 RAM_hi:00FFFEFE .space 1 RAM_hi:00FFFEFF .space 1 RAM_hi:00FFFF00 .space 1 RAM_hi:00FFFF01 .space 1 RAM_hi:00FFFF02 .space 1 RAM_hi:00FFFF03 .space 1 RAM_hi:00FFFF04 .space 1 RAM_hi:00FFFF05 .space 1 RAM_hi:00FFFF06 .space 1 RAM_hi:00FFFF07 .space 1 RAM_hi:00FFFF08 .space 1 RAM_hi:00FFFF09 .space 1 RAM_hi:00FFFF0A .space 1 RAM_hi:00FFFF0B .space 1 RAM_hi:00FFFF0C .space 1 RAM_hi:00FFFF0D .space 1 RAM_hi:00FFFF0E .space 1 RAM_hi:00FFFF0F .space 1 RAM_hi:00FFFF10 .space 1 RAM_hi:00FFFF11 .space 1 RAM_hi:00FFFF12 .space 1 RAM_hi:00FFFF13 .space 1 RAM_hi:00FFFF14 .space 1 RAM_hi:00FFFF15 .space 1 RAM_hi:00FFFF16 .space 1 RAM_hi:00FFFF17 .space 1 RAM_hi:00FFFF18 .space 1 RAM_hi:00FFFF19 .space 1 RAM_hi:00FFFF1A .space 1 RAM_hi:00FFFF1B .space 1 RAM_hi:00FFFF1C .space 1 RAM_hi:00FFFF1D .space 1 RAM_hi:00FFFF1E .space 1 RAM_hi:00FFFF1F .space 1 RAM_hi:00FFFF20 .space 1 RAM_hi:00FFFF21 .space 1 RAM_hi:00FFFF22 .space 1 RAM_hi:00FFFF23 .space 1 RAM_hi:00FFFF24 .space 1 RAM_hi:00FFFF25 .space 1 RAM_hi:00FFFF26 .space 1 RAM_hi:00FFFF27 .space 1 RAM_hi:00FFFF28 .space 1 RAM_hi:00FFFF29 .space 1 RAM_hi:00FFFF2A .space 1 RAM_hi:00FFFF2B .space 1 RAM_hi:00FFFF2C .space 1 RAM_hi:00FFFF2D .space 1 RAM_hi:00FFFF2E .space 1 RAM_hi:00FFFF2F .space 1 RAM_hi:00FFFF30 .space 1 RAM_hi:00FFFF31 .space 1 RAM_hi:00FFFF32 .space 1 RAM_hi:00FFFF33 .space 1 RAM_hi:00FFFF34 .space 1 RAM_hi:00FFFF35 .space 1 RAM_hi:00FFFF36 .space 1 RAM_hi:00FFFF37 .space 1 RAM_hi:00FFFF38 .space 1 RAM_hi:00FFFF39 .space 1 RAM_hi:00FFFF3A .space 1 RAM_hi:00FFFF3B .space 1 RAM_hi:00FFFF3C .space 1 RAM_hi:00FFFF3D .space 1 RAM_hi:00FFFF3E .space 1 RAM_hi:00FFFF3F .space 1 RAM_hi:00FFFF40 .space 1 RAM_hi:00FFFF41 .space 1 RAM_hi:00FFFF42 .space 1 RAM_hi:00FFFF43 .space 1 RAM_hi:00FFFF44 .space 1 RAM_hi:00FFFF45 .space 1 RAM_hi:00FFFF46 .space 1 RAM_hi:00FFFF47 .space 1 RAM_hi:00FFFF48 .space 1 RAM_hi:00FFFF49 .space 1 RAM_hi:00FFFF4A .space 1 RAM_hi:00FFFF4B .space 1 RAM_hi:00FFFF4C .space 1 RAM_hi:00FFFF4D .space 1 RAM_hi:00FFFF4E .space 1 RAM_hi:00FFFF4F .space 1 RAM_hi:00FFFF50 .space 1 RAM_hi:00FFFF51 .space 1 RAM_hi:00FFFF52 .space 1 RAM_hi:00FFFF53 .space 1 RAM_hi:00FFFF54 .space 1 RAM_hi:00FFFF55 .space 1 RAM_hi:00FFFF56 .space 1 RAM_hi:00FFFF57 .space 1 RAM_hi:00FFFF58 .space 1 RAM_hi:00FFFF59 .space 1 RAM_hi:00FFFF5A .space 1 RAM_hi:00FFFF5B .space 1 RAM_hi:00FFFF5C .space 1 RAM_hi:00FFFF5D .space 1 RAM_hi:00FFFF5E .space 1 RAM_hi:00FFFF5F .space 1 RAM_hi:00FFFF60 .space 1 RAM_hi:00FFFF61 .space 1 RAM_hi:00FFFF62 .space 1 RAM_hi:00FFFF63 .space 1 RAM_hi:00FFFF64 .space 1 RAM_hi:00FFFF65 .space 1 RAM_hi:00FFFF66 .space 1 RAM_hi:00FFFF67 .space 1 RAM_hi:00FFFF68 .space 1 RAM_hi:00FFFF69 .space 1 RAM_hi:00FFFF6A .space 1 RAM_hi:00FFFF6B .space 1 RAM_hi:00FFFF6C .space 1 RAM_hi:00FFFF6D .space 1 RAM_hi:00FFFF6E .space 1 RAM_hi:00FFFF6F .space 1 RAM_hi:00FFFF70 .space 1 RAM_hi:00FFFF71 .space 1 RAM_hi:00FFFF72 .space 1 RAM_hi:00FFFF73 .space 1 RAM_hi:00FFFF74 .space 1 RAM_hi:00FFFF75 .space 1 RAM_hi:00FFFF76 .space 1 RAM_hi:00FFFF77 .space 1 RAM_hi:00FFFF78 .space 1 RAM_hi:00FFFF79 .space 1 RAM_hi:00FFFF7A .space 1 RAM_hi:00FFFF7B .space 1 RAM_hi:00FFFF7C .space 1 RAM_hi:00FFFF7D .space 1 RAM_hi:00FFFF7E .space 1 RAM_hi:00FFFF7F .space 1 RAM_hi:00FFFF7F IO2_high:00FFFF80 ; =========================================================================== IO2_high:00FFFF80 IO2_high:00FFFF80 ; Segment type: Regular IO2_high:00FFFF80 .data; IO2_high IO2_high:00FFFF80 .space 1 IO2_high:00FFFF81 .space 1 IO2_high:00FFFF82 .space 1 IO2_high:00FFFF83 .space 1 IO2_high:00FFFF84 .space 1 IO2_high:00FFFF85 .space 1 IO2_high:00FFFF86 .space 1 IO2_high:00FFFF87 .space 1 IO2_high:00FFFF88 .space 1 IO2_high:00FFFF89 .space 1 IO2_high:00FFFF8A .space 1 IO2_high:00FFFF8B .space 1 IO2_high:00FFFF8C .space 1 IO2_high:00FFFF8D .space 1 IO2_high:00FFFF8E .space 1 IO2_high:00FFFF8F .space 1 IO2_high:00FFFF90 .space 1 IO2_high:00FFFF91 SCI_SPCR: .space 1 ; DATA XREF: sciConfigureForIrDA+6w IO2_high:00FFFF91 ; sciConfigureForIrDA+28w ... IO2_high:00FFFF92 .space 1 IO2_high:00FFFF93 .space 1 IO2_high:00FFFF94 .space 1 IO2_high:00FFFF95 .space 1 IO2_high:00FFFF96 .space 1 IO2_high:00FFFF97 .space 1 IO2_high:00FFFF98 SCI_SMR3: .space 1 ; DATA XREF: sciConfigureForIrDA+14w IO2_high:00FFFF99 SCI_BRR3: .space 1 ; DATA XREF: sciConfigureForIrDA+16w IO2_high:00FFFF9A SCI_SCR3: .space 1 ; DATA XREF: sciConfigureForIrDA+12w IO2_high:00FFFF9A ; sciConfigureForIrDA+20w ... IO2_high:00FFFF9B SCI_TDR3: .space 1 ; DATA XREF: irTxByte+8w IO2_high:00FFFF9C SCI_SSR3: .space 1 ; DATA XREF: sendPacket:wait_for_tx_endr IO2_high:00FFFF9C ; sendPacket:drop_echo_char_if_anyr ... IO2_high:00FFFF9D SCI_RDR3: .space 1 ; DATA XREF: sendPacket+76r IO2_high:00FFFF9D ; configureIrdaAndIrRxTimer+44r ... IO2_high:00FFFF9E .space 1 IO2_high:00FFFF9F .space 1 IO2_high:00FFFFA0 .space 1 IO2_high:00FFFFA1 .space 1 IO2_high:00FFFFA2 .space 1 IO2_high:00FFFFA3 .space 1 IO2_high:00FFFFA4 .space 1 IO2_high:00FFFFA5 .space 1 IO2_high:00FFFFA6 SCI_SEMR: .space 1 ; DATA XREF: sciConfigureForIrDA+10w IO2_high:00FFFFA7 IrDA_IRCR: .space 1 ; DATA XREF: sciConfigureForIrDA+24w IO2_high:00FFFFA8 .space 1 IO2_high:00FFFFA9 .space 1 IO2_high:00FFFFAA .space 1 IO2_high:00FFFFAB .space 1 IO2_high:00FFFFAC .space 1 IO2_high:00FFFFAD .space 1 IO2_high:00FFFFAE .space 1 IO2_high:00FFFFAF .space 1 IO2_high:00FFFFB0 WDT_TMWD: .space 1 ; DATA XREF: wdt_maybe_on+Ew IO2_high:00FFFFB1 WDT_TCSRWD1: .space 1 ; DATA XREF: ENTRY+12r IO2_high:00FFFFB1 ; wdt_maybe_off+2w ... IO2_high:00FFFFB2 .space 1 IO2_high:00FFFFB3 WDT_TCWD: .space 1 ; DATA XREF: wdt_maybe_pet+6w IO2_high:00FFFFB3 ; accelReadSample+36w IO2_high:00FFFFB4 .space 1 IO2_high:00FFFFB5 .space 1 IO2_high:00FFFFB6 .space 1 IO2_high:00FFFFB7 .space 1 IO2_high:00FFFFB8 .space 1 IO2_high:00FFFFB9 .space 1 IO2_high:00FFFFBA .space 1 IO2_high:00FFFFBB .space 1 IO2_high:00FFFFBC ADC_ADRR: .space 2 ; DATA XREF: adcSample+5Ar IO2_high:00FFFFBE ADC_AMR: .space 2 ; DATA XREF: adcSample+26r IO2_high:00FFFFBE ; adcSample+2Cw ... IO2_high:00FFFFC0 .space 1 IO2_high:00FFFFC1 .space 1 IO2_high:00FFFFC2 .space 1 IO2_high:00FFFFC3 .space 1 IO2_high:00FFFFC4 .space 1 IO2_high:00FFFFC5 .space 1 IO2_high:00FFFFC6 .space 1 IO2_high:00FFFFC7 .space 1 IO2_high:00FFFFC8 .space 1 IO2_high:00FFFFC9 .space 1 IO2_high:00FFFFCA IO_PMRB: .space 1 ; DATA XREF: basicIoConfig+2Ew IO2_high:00FFFFCB .space 1 IO2_high:00FFFFCC .space 1 IO2_high:00FFFFCD .space 1 IO2_high:00FFFFCE .space 1 IO2_high:00FFFFCF .space 1 IO2_high:00FFFFD0 .space 1 IO2_high:00FFFFD1 .space 1 IO2_high:00FFFFD2 .space 1 IO2_high:00FFFFD3 .space 1 IO2_high:00FFFFD4 IO_PDR1: .space 1 ; DATA XREF: eepromWriteSingleByte+3Ew IO2_high:00FFFFD4 ; eepromWriteSingleByte+74w ... IO2_high:00FFFFD5 .space 1 IO2_high:00FFFFD6 IO_PDR3: .space 1 ; DATA XREF: io_related_weirdness+8w IO2_high:00FFFFD6 ; configureIrdaAndIrRxTimer+Ew ... IO2_high:00FFFFD7 .space 1 IO2_high:00FFFFD8 .space 1 IO2_high:00FFFFD9 .space 1 IO2_high:00FFFFDA .space 1 IO2_high:00FFFFDB IO_PDR8: .space 1 ; DATA XREF: adcSample+8w IO2_high:00FFFFDB ; adcSample+6Aw ... IO2_high:00FFFFDC IO_PDR9: .space 1 ; DATA XREF: accelRegRead+16w IO2_high:00FFFFDC ; accelRegRead+5Cw ... IO2_high:00FFFFDD .space 1 IO2_high:00FFFFDE IO_PDRB: .space 1 ; DATA XREF: maybeConfigureKeys+40w IO2_high:00FFFFDE ; likelyKeyDebounceRoutine+6r ... IO2_high:00FFFFDF .space 1 IO2_high:00FFFFE0 .space 1 IO2_high:00FFFFE1 .space 1 IO2_high:00FFFFE2 .space 1 IO2_high:00FFFFE3 .space 1 IO2_high:00FFFFE4 IO_PCR1: .space 1 ; DATA XREF: basicIoConfig+24w IO2_high:00FFFFE5 .space 1 IO2_high:00FFFFE6 IO_PCR3: .space 1 ; DATA XREF: io_related_weirdness+Cw IO2_high:00FFFFE7 .space 1 IO2_high:00FFFFE8 .space 1 IO2_high:00FFFFE9 .space 1 IO2_high:00FFFFEA .space 1 IO2_high:00FFFFEB IO_PCR8: .space 1 ; DATA XREF: adcSample+2w IO2_high:00FFFFEB ; adcSample+6Cw ... IO2_high:00FFFFEC IO_PCR9: .space 1 ; DATA XREF: basicIoConfig+20w IO2_high:00FFFFED .space 1 IO2_high:00FFFFEE .space 1 IO2_high:00FFFFEF .space 1 IO2_high:00FFFFF0 SYSCR1: .space 1 ; DATA XREF: deviceSleep+6w IO2_high:00FFFFF0 ; deviceSleep+1Ew ... IO2_high:00FFFFF1 SYSCR2: .space 1 ; DATA XREF: deviceSleep+Aw IO2_high:00FFFFF1 ; deviceSleep+22w ... IO2_high:00FFFFF2 IRQ_IEGR: .space 1 ; DATA XREF: maybeConfigureKeys+1Ew IO2_high:00FFFFF2 ; maybeConfigureKeys+34w IO2_high:00FFFFF3 IRQ_IENR1: .space 1 ; DATA XREF: sleepModeEventLoop+10w IO2_high:00FFFFF3 ; sleepModeEventLoop+18w ... IO2_high:00FFFFF4 IRQ_IENR2: .space 1 ; DATA XREF: set_timer_b_and_enable_irq+14w IO2_high:00FFFFF4 ; adcSample+22w ... IO2_high:00FFFFF5 .space 1 IO2_high:00FFFFF6 IRQ_IRR1: .space 1 ; DATA XREF: maybe_shutDownIr_then_performActionAsRequestedw IO2_high:00FFFFF6 ; maybeConfigureKeys+22w ... IO2_high:00FFFFF7 IRQ_IRR2: .space 1 ; DATA XREF: set_timer_b_and_enable_irq+10w IO2_high:00FFFFF7 ; VECTOR_TIMER_B1w ... IO2_high:00FFFFF8 .space 1 IO2_high:00FFFFF9 .space 1 IO2_high:00FFFFFA CKSTPR1: .space 1 ; DATA XREF: set_timer_b_and_enable_irqw IO2_high:00FFFFFA ; sciConfigureForIrDAw ... IO2_high:00FFFFFB CKSTPR2: .space 1 ; DATA XREF: configureIrdaAndIrRxTimer+14w IO2_high:00FFFFFB ; maybe_shutDownIr_then_performActionAsRequested+20w ... IO2_high:00FFFFFC .space 1 IO2_high:00FFFFFD .space 1 IO2_high:00FFFFFE .space 1 IO2_high:00FFFFFF .space 1 IO2_high:00FFFFFF IO2_high:00FFFFFF ; end