diff options
-rw-r--r-- | engine/gfx/load_pics.asm | 45 | ||||
-rwxr-xr-x | engine/items/item_effects.asm | 18 | ||||
-rwxr-xr-x | engine/pokemon/health.asm | 4 | ||||
-rw-r--r-- | engine/pokemon/mon_menu.asm | 4 | ||||
-rwxr-xr-x | engine/pokemon/move_mon.asm | 24 | ||||
-rw-r--r-- | home/init.asm | 2 | ||||
-rw-r--r-- | home/map.asm | 6 | ||||
-rw-r--r-- | home/serial.asm | 38 | ||||
-rw-r--r-- | home/video.asm | 4 | ||||
-rwxr-xr-x | hram.asm | 157 |
10 files changed, 146 insertions, 156 deletions
diff --git a/engine/gfx/load_pics.asm b/engine/gfx/load_pics.asm index 18f76ec0..187350e7 100644 --- a/engine/gfx/load_pics.asm +++ b/engine/gfx/load_pics.asm @@ -43,23 +43,23 @@ GetUnownLetter: call Divide ; Increment to get 1-26 - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] inc a ld [wUnownLetter], a ret GetMonFrontpic: - call _GetFrontpic + call GetFrontpic jp Load2bppToSRAM UnusedFrontpicPredef: - call _GetFrontpic + call GetFrontpic push hl farcall StubbedGetFrontpic pop hl jp Load2bppToSRAM -_GetFrontpic: +GetFrontpic: ld a, [wCurPartySpecies] ld [wCurSpecies], a and a @@ -69,7 +69,7 @@ _GetFrontpic: cp EGG + 1 ret nc -.is_a_pokemon: +.is_a_pokemon push de call GetBaseData ld a, [wBasePicSize] @@ -78,24 +78,22 @@ _GetFrontpic: push bc ld a, BANK(sDecompressBuffer) call OpenSRAM - ld hl, PokemonPicPointers + ld hl, PokemonPicPointers ; UnownPicPointers ld a, [wCurPartySpecies] ld d, BANK(PokemonPicPointers) cp UNOWN jr z, .unown - cp EGG jr nz, .not_egg - ld hl, EggPic ld a, BANK(EggPic) jr .ok -.unown: +.unown ld a, [wUnownLetter] ld d, BANK(UnownPicPointers) -.not_egg: +.not_egg dec a ld bc, 6 call AddNTimes @@ -108,7 +106,7 @@ _GetFrontpic: call GetFarHalfword pop af -.ok: +.ok ld de, sDecompressBuffer call FarDecompress pop bc @@ -135,11 +133,13 @@ GetMonBackpic: cp EGG + 1 ret nc -.is_a_pokemon: +.is_a_pokemon push de ld a, BANK(sDecompressBuffer) call OpenSRAM - ld hl, PokemonPicPointers + + ; These are assumed to be at the same address in their respective banks. + ld hl, PokemonPicPointers ; UnownPicPointers ld a, [wCurPartySpecies] ld d, BANK(PokemonPicPointers) cp UNOWN @@ -147,7 +147,7 @@ GetMonBackpic: ld a, [wUnownLetter] ld d, BANK(UnownPicPointers) -.ok: +.ok dec a ld bc, 6 call AddNTimes @@ -195,20 +195,17 @@ FixPicBank: push bc ld b, a ld hl, .FixPicBankTable - -.loop: +.loop ld a, [hli] cp -1 jr z, .done - inc hl cp b jr nz, .loop - dec hl ld b, [hl] -.done: +.done ld a, b pop bc pop hl @@ -223,7 +220,7 @@ FixPicBank: Function150ff: ld a, c push de - ld hl, PokemonPicPointers ; UnownPicPointers + ld hl, PokemonPicPointers dec a ld bc, 6 call AddNTimes @@ -389,7 +386,7 @@ PadFrontpic: rept 4 srl c endr -.loop: +.loop rept 16 ld [hli], a endr @@ -404,7 +401,7 @@ LoadOrientedFrontpic: rept 4 srl c endr -.left_loop: +.left_loop rept 16 ld a, [de] inc de @@ -414,9 +411,9 @@ endr jr nz, .left_loop ret -.x_flip: +.x_flip push bc -.right_loop: +.right_loop ld a, [de] inc de ld b, a diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index 274b8468..42e93894 100755 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -261,7 +261,7 @@ UltraBall: ; e926 ld a, b jp z, .skip_hp_calc ld a, b - ldh [hPrintNum4], a + ldh [hMultiplicand + 2], a ld hl, wEnemyMonHP ld b, [hl] inc hl @@ -319,7 +319,7 @@ UltraBall: ; e926 ld b, $4 call Divide - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] and a jr nz, .statuscheck ld a, 1 @@ -1166,12 +1166,14 @@ RareCandy: ; ef68 (3:6f68) pop de ld a, $8 call GetPartyParamLocation - ldh a, [hQuotient] + + ldh a, [hMultiplicand + 0] ld [hli], a - ldh a, [hPrintNum3] + ldh a, [hMultiplicand + 1] ld [hli], a - ldh a, [hPrintNum4] + ldh a, [hMultiplicand + 2] ld [hl], a + ld a, $24 call GetPartyParamLocation ld a, [hli] @@ -1813,9 +1815,9 @@ GetOneFifthMaxHP: ; f3ce (3:73ce) ldh [hDivisor], a ld b, 2 call Divide - ldh a, [hQuotient + 1] - ld d, a ldh a, [hQuotient + 2] + ld d, a + ldh a, [hQuotient + 3] ld e, a pop bc ret @@ -2704,7 +2706,7 @@ Functionf8c8: ; f8c8 (3:78c8) and a jr z, .asm_f8fd .asm_f8ea - ldh a, [hPrintNum4] + ldh a, [hQuotient + 3] cp $8 jr c, .asm_f8f2 ld a, $7 diff --git a/engine/pokemon/health.asm b/engine/pokemon/health.asm index a94a3ec3..8bf0752a 100755 --- a/engine/pokemon/health.asm +++ b/engine/pokemon/health.asm @@ -80,10 +80,10 @@ ComputeHPBarPixels: ldh [hDividend + 2], a .asm_c711 ld a, e - ldh [hPrintNum5], a + ldh [hDivisor], a ld b, $4 call Divide - ldh a, [hPrintNum4] + ldh a, [hQuotient + 3] ld e, a pop hl and a diff --git a/engine/pokemon/mon_menu.asm b/engine/pokemon/mon_menu.asm index 6cc65879..aa211ae1 100644 --- a/engine/pokemon/mon_menu.asm +++ b/engine/pokemon/mon_menu.asm @@ -754,10 +754,10 @@ MonMenu_Softboiled_MilkDrink: call Divide ld a, MON_HP + 1 call GetPartyParamLocation - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] sub [hl] dec hl - ldh a, [hQuotient + 1] + ldh a, [hQuotient + 2] sbc [hl] ret diff --git a/engine/pokemon/move_mon.asm b/engine/pokemon/move_mon.asm index 5fce891f..f6ef241e 100755 --- a/engine/pokemon/move_mon.asm +++ b/engine/pokemon/move_mon.asm @@ -793,11 +793,11 @@ Functiondd6a: ; dd6a (3:5d6a) pop bc ld hl, $8 add hl, bc - ldh a, [hQuotient] + ldh a, [hMultiplicand] ld [hli], a - ldh a, [hPrintNum3] + ldh a, [hMultiplicand + 1] ld [hli], a - ldh a, [hPrintNum4] + ldh a, [hMultiplicand + 2] ld [hl], a and a ret @@ -892,13 +892,13 @@ SendMonIntoBox: ; de74 (3:5e74) ld d, a callfar CalcExpAtLevel pop de - ldh a, [hQuotient] + ldh a, [hProduct + 1] ld [de], a inc de - ldh a, [hPrintNum3] + ldh a, [hProduct + 2] ld [de], a inc de - ldh a, [hPrintNum4] + ldh a, [hProduct + 3] ld [de], a inc de xor a @@ -1439,11 +1439,11 @@ CalcMonStatC: ; e181 jr nz, .not_hp ld a, [wCurPartyLevel] ld b, a - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] add b ldh [hMultiplicand + 2], a jr nc, .no_overflow_3 - ldh a, [hQuotient + 1] + ldh a, [hQuotient + 2] inc a ldh [hMultiplicand + 1], a @@ -1452,21 +1452,21 @@ CalcMonStatC: ; e181 .not_hp ld b, a - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] add b ldh [hMultiplicand + 2], a jr nc, .no_overflow_4 - ldh a, [hQuotient + 1] + ldh a, [hQuotient + 2] inc a ldh [hMultiplicand + 1], a .no_overflow_4 - ldh a, [hQuotient + 1] + ldh a, [hQuotient + 2] cp (1000 / $100) + 1 jr nc, .max_stat cp 1000 / $100 jr c, .stat_value_okay - ldh a, [hQuotient + 2] + ldh a, [hQuotient + 3] cp 1000 % $100 jr c, .stat_value_okay diff --git a/home/init.asm b/home/init.asm index 82b3cf7e..a1e95d16 100644 --- a/home/init.asm +++ b/home/init.asm @@ -104,7 +104,7 @@ Init:: ldh [rWX], a ld a, CONNECTION_NOT_ESTABLISHED - ldh [hLinkPlayerNumber], a + ldh [hSerialConnectionStatus], a ld h, $98 call BlankBGMap diff --git a/home/map.asm b/home/map.asm index d6da26c2..53fe7641 100644 --- a/home/map.asm +++ b/home/map.asm @@ -1566,7 +1566,7 @@ UpdateBGMapRow:: ; 28f6 (0:28f6) dec c jr nz, .asm_2904 ld a, $14 - ldh [hFFDE], a + ldh [hBGMapTileCount], a ret UpdateBGMapColumn:: ; 291b (0:291b) @@ -1590,7 +1590,7 @@ UpdateBGMapColumn:: ; 291b (0:291b) dec c jr nz, .asm_2920 ld a, $12 - ldh [hFFDE], a + ldh [hBGMapTileCount], a ret Function2939:: @@ -2427,7 +2427,7 @@ LoadTilesetHeader:: ; 2dfa (0:2dfa) pop bc pop hl ret - + InexplicablyEmptyFunction:: ; 2e16 ; Inexplicably empty. ; Seen in PredefPointers. diff --git a/home/serial.asm b/home/serial.asm index 0fb1750b..f2924384 100644 --- a/home/serial.asm +++ b/home/serial.asm @@ -10,7 +10,7 @@ Serial:: bit 0, a jr nz, .printer - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] inc a ; is it equal to CONNECTION_NOT_ESTABLISHED? jr z, .establish_connection @@ -20,7 +20,7 @@ Serial:: ldh a, [hSerialSend] ldh [rSB], a - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr z, .player2 @@ -43,7 +43,7 @@ Serial:: .player1 ldh [hSerialReceive], a - ldh [hLinkPlayerNumber], a + ldh [hSerialConnectionStatus], a cp USING_INTERNAL_CLOCK jr z, ._player2 @@ -70,7 +70,7 @@ Serial:: .player2 ld a, TRUE - ldh [hFFCC], a + ldh [hSerialReceivedNewData], a ld a, SERIAL_NO_DATA_BYTE ldh [hSerialSend], a @@ -83,7 +83,7 @@ Serial:: Serial_ExchangeBytes:: ld a, 1 - ldh [hFFCE], a + ldh [hSerialIgnoringInitialData], a .loop ld a, [hl] ldh [hSerialSend], a @@ -95,7 +95,7 @@ Serial_ExchangeBytes:: .wait dec a jr nz, .wait - ldh a, [hFFCE] + ldh a, [hSerialIgnoringInitialData] and a ld a, b pop bc @@ -104,7 +104,7 @@ Serial_ExchangeBytes:: cp SERIAL_PREAMBLE_BYTE jr nz, .loop xor a - ldh [hFFCE], a + ldh [hSerialIgnoringInitialData], a jr .loop .load @@ -119,8 +119,8 @@ Serial_ExchangeBytes:: Serial_ExchangeByte:: .loop xor a - ldh [hFFCC], a - ldh a, [hLinkPlayerNumber] + ldh [hSerialReceivedNewData], a + ldh a, [hSerialConnectionStatus] cp 2 jr nz, .not_player_2 ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) @@ -130,10 +130,10 @@ Serial_ExchangeByte:: .not_player_2 .loop2 - ldh a, [hFFCC] + ldh a, [hSerialReceivedNewData] and a jr nz, .reset_ffcc - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] cp 1 jr nz, .not_player_1_or_wLinkTimeoutFrames_zero call CheckwLinkTimeoutFramesNonzero @@ -165,10 +165,10 @@ Serial_ExchangeByte:: dec a ld [wce5d + 1], a jr nz, .loop2 - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] cp 1 jr z, .reset_ffcc - + ld a, 255 .delay_255_cycles dec a @@ -176,7 +176,7 @@ Serial_ExchangeByte:: .reset_ffcc xor a - ldh [hFFCC], a + ldh [hSerialReceivedNewData], a ldh a, [rIE] and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK) sub 1 << SERIAL @@ -246,7 +246,7 @@ Serial_ExchangeLinkMenuSelection:: ld de, wOtherPlayerLinkMode ld c, 2 ld a, TRUE - ldh [hFFCE], a + ldh [hSerialIgnoringInitialData], a .asm_7f8 call DelayFrame ld a, [hl] @@ -254,10 +254,10 @@ Serial_ExchangeLinkMenuSelection:: call Serial_ExchangeByte ld b, a inc hl - ldh a, [hFFCE] + ldh a, [hSerialIgnoringInitialData] and a ld a, 0 - ldh [hFFCE], a + ldh [hSerialIgnoringInitialData], a jr nz, .asm_7f8 ld a, b ld [de], a @@ -343,7 +343,7 @@ LinkTransfer:: ld a, [wPlayerLinkAction] add b ldh [hSerialSend], a - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK jr nz, .player_1 ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) @@ -373,7 +373,7 @@ LinkDataReceived:: ; Let the other system know that the data has been received. xor a ldh [hSerialSend], a - ldh a, [hLinkPlayerNumber] + ldh a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK ret nz ld a, (0 << rSC_ON) | (1 << rSC_CLOCK) diff --git a/home/video.asm b/home/video.asm index 5b17ce44..519cd6e1 100644 --- a/home/video.asm +++ b/home/video.asm @@ -53,10 +53,10 @@ rept 2 endr ; We've done 2 16x8 blocks - ldh a, [hFFDE] + ldh a, [hBGMapTileCount] dec a dec a - ldh [hFFDE], a + ldh [hBGMapTileCount], a jr nz, .next @@ -4,13 +4,13 @@ hTransferVirtualOAM:: ds 12 ; ff80 hROMBankBackup:: db ; ff8c hBuffer:: db ; ff8d -hFF8E:: db ; ff8e +hSRAMBank:: db ; ff8e -hRTCDayHi:: db ; ff8f -hRTCDayLo:: db ; ff90 -hRTCHours:: db ; ff91 -hRTCMinutes:: db ; ff92 -hRTCSeconds:: db ; ff93 +hRTCDayHi:: db ; ff8f +hRTCDayLo:: db ; ff90 +hRTCHours:: db ; ff91 +hRTCMinutes:: db ; ff92 +hRTCSeconds:: db ; ff93 ds 2 hHours:: db ; ff96 @@ -19,7 +19,8 @@ hMinutes:: db ; ff98 ds 1 hSeconds:: db ; ff9a ds 1 - ds 1 + + ds 1 hVBlankCounter:: db ; ff9d ds 1 @@ -27,19 +28,20 @@ hVBlankCounter:: db ; ff9d hROMBank:: db ; ff9f hVBlank :: db ; ffa0 hMapEntryMethod:: db ; ffa1 -hMenuReturn:: db ; ffa2 +hMenuReturn:: db ; ffa2 ds 1 -hJoypadReleased:: db ; ffa4 -hJoypadPressed:: db ; ffa5 -hJoypadDown:: db ; ffa6 -hJoypadSum:: db ; ffa7 -hJoyReleased:: db ; ffa8 -hJoyPressed:: db ; ffa9 -hJoyDown:: db ; ffaa -hJoyLast:: db ; ffab +hJoypadReleased:: db ; ffa4 +hJoypadPressed:: db ; ffa5 +hJoypadDown:: db ; ffa6 +hJoypadSum:: db ; ffa7 +hJoyReleased:: db ; ffa8 +hJoyPressed:: db ; ffa9 +hJoyDown:: db ; ffaa +hJoyLast:: db ; ffab + +hInMenu:: db ; ffac -hInMenu:: db ; ffac ds 1 hPrinter:: db ; ffae @@ -47,105 +49,94 @@ hGraphicStartTile:: db ; ffaf hMoveMon:: db ; ffb0 UNION ; ffb1 -hMapObjectIndexBuffer:: db ; ffb1 -hObjectStructIndexBuffer:: db ; ffb2 +hMapObjectIndexBuffer:: db ; ffb1 +hObjectStructIndexBuffer:: db ; ffb2 NEXTU ; ffb1 -hConnectionStripLength:: db ; ffb1 -hConnectedMapWidth:: db ; ffb2 -ENDU ;ffb3 +hConnectionStripLength:: db ; ffb1 +hConnectedMapWidth:: db ; ffb2 +ENDU ; ffb3 hEnemyMonSpeed:: dw ; ffb3 UNION ; ffb5 - ds 2 -hPartyMon1Speed:: dw ; ffb7 - -NEXTU ; ffb5 +; math-related values UNION ; ffb5 -hDividend:: ds 4 ; ffb5 ; length in b register, before 'call Divide' (max 4 bytes) -hDivisor:: db ; ffb9 ; 1 byte long -NEXTU ; ffb5 +; inputs to Multiply ds 1 -hQuotient:: ds 3 ; ffb6 ; result (3 bytes long) -hRemainder:: db ; ffb9 +hMultiplicand:: ds 3 ; ffb6 +hMultiplier:: db ; ffb9 NEXTU ; ffb5 - ds 1 -hMultiplicand:: ds 3 ; ffb6 ; 3 bytes long -hMultiplier:: db ; ffb9 ; 1 byte long +; result of Multiply +hProduct:: ds 4 ; ffb5 +NEXTU +; inputs to Divide +hDividend:: ds 4 ; ffb5 +hDivisor:: db ; ffb9 NEXTU ; ffb5 -hProduct:: ds 4 ; ffb5 ; result (4 bytes long) -ENDU ; ffba +; results of Divide +hQuotient:: ds 4 ; ffb5 +hRemainder:: db ; ffb9 +ENDU hMathBuffer:: ds 5 ; ffba NEXTU ; ffb5 - -hPrintNum1:: db ; ffb5 -hPrintNum2:: db ; ffb6 -hPrintNum3:: db ; ffb7 -hPrintNum4:: db ; ffb8 -hPrintNum5:: db ; ffb9 -hPrintNum6:: db ; ffba -hPrintNum7:: db ; ffbb -hPrintNum8:: db ; ffbc -hPrintNum9:: db ; ffbd -hPrintNum10:: db ; ffbe +; PrintNum scratch space +hPrintNumBuffer:: ds 10 ; ffb5 NEXTU ; ffb5 - - ds 9 +; miscellaneous + ds 9 hMGStatusFlags:: db ; ffbe ENDU ; ffbf -hUsedSpriteIndex:: db ; ffbf -hUsedSpriteTile:: db ; ffc0 -hFFC1:: db ; ffc1 -hFFC2:: db ; ffc2 -hFFC3:: db ; ffc3 -hFFC4:: db ; ffc4 +hUsedSpriteIndex:: db ; ffbf +hUsedSpriteTile:: db ; ffc0 +hFFC1:: db ; ffc1 +hFFC2:: db ; ffc2 +hFFC3:: db ; ffc3 +hFFC4:: db ; ffc4 UNION ; ffc5 hMoneyTemp:: ds 3 ; ffc5 NEXTU ; ffc5 -hMGJoypadPressed:: db ; ffc5 -hMGJoypadReleased:: db ; ffc6 +hMGJoypadPressed:: db ; ffc5 +hMGJoypadReleased:: db ; ffc6 ENDU ; ffc8 hLCDCPointer:: db ; ffc8 hLYOverrideStart:: db ; ffc9 hLYOverrideEnd:: db ; ffca -hMobileReceive:: db ; ffcb -hFFCC:: db ; ffcc -hLinkPlayerNumber:: db ; ffcd -hFFCE:: db ; ffce -hSerialSend:: db ; ffcf -hSerialReceive:: db ; ffd0 - -hSCX:: db ; ffd1 -hSCY:: db ; ffd2 -hWX:: db ; ffd3 -hWY:: db ; ffd4 -hTilesPerCycle:: db ; ffd5 -hBGMapMode:: db ; ffd6 -hBGMapThird:: db ; ffd7 -hBGMapAddress:: db ; ffd8 +hMobileReceive:: db ; ffcb +hSerialReceivedNewData:: db ; ffcc +hSerialConnectionStatus:: db ; ffcd +hSerialIgnoringInitialData:: db ; ffce +hSerialSend:: db ; ffcf +hSerialReceive:: db ; ffd0 - ds 1 +hSCX:: db ; ffd1 +hSCY:: db ; ffd2 +hWX:: db ; ffd3 +hWY:: db ; ffd4 +hTilesPerCycle:: db ; ffd5 +hBGMapMode:: db ; ffd6 +hBGMapThird:: db ; ffd7 +hBGMapAddress:: dw ; ffd8 -hOAMUpdate :: db ; ffda +hOAMUpdate:: db ; ffda -hSPBuffer:: dw ; ffdb +hSPBuffer:: dw ; ffdb -hBGMapUpdate:: db ; ffdd -hFFDE:: db ; ffde +hBGMapUpdate:: db ; ffdd +hBGMapTileCount:: db ; ffde ds 1 -hMapAnims:: db ; ffe0 -hTileAnimFrame:: db ; ffe1 +hMapAnims:: db ; ffe0 +hTileAnimFrame:: db ; ffe1 hLastTalked:: db ; ffe2 @@ -156,14 +147,14 @@ hRandomSub:: db ; ffe4 hSecondsBackup:: db ; ffe5 hBattleTurn:: ; ffe6 -;Which trainers turn is it? 0: Player, 1: Opponent Trainer - db - +; Which trainer's turn is it? 0: player, 1: opponent trainer + db + hCGBPalUpdate:: db ; ffe7 hCGB:: db ; ffe8 hSGB:: db ; ffe9 hDMATransfer:: db ; ffea hMobile:: db ; ffeb -hFFEC:: db ; ffec +hSystemBooted:: db ; ffec hClockResetTrigger:: db ; ffed |