diff options
author | Rangi <35663410+Rangi42@users.noreply.github.com> | 2020-11-05 23:50:03 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-05 23:50:03 -0500 |
commit | d3f13528754b985e892385dbd88c3c9a95681f1b (patch) | |
tree | 4a18885606996ff59bb714afb5db9a548e2f94a7 | |
parent | abaf9fee7c73e708ef8c3e7a1ed710bfc9ec6f6e (diff) | |
parent | e16dec874a239c162680b169391d3c0c7ee1fc70 (diff) |
Merge pull request #301 from Rangi42/master
Sync home and macro code with pokeyellow
43 files changed, 177 insertions, 227 deletions
diff --git a/constants/gfx_constants.asm b/constants/gfx_constants.asm index 2567e253..dd9de6b6 100644 --- a/constants/gfx_constants.asm +++ b/constants/gfx_constants.asm @@ -2,16 +2,6 @@ TILE_WIDTH EQU 8 ; pixels LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes - const_def - const SHADE_WHITE ; %00 - const SHADE_LIGHT ; %01 - const SHADE_DARK ; %10 - const SHADE_BLACK ; %11 -NUM_PAL_COLORS EQU const_value - -PAL_COLOR_SIZE EQU 2 -PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE - SCREEN_WIDTH EQU 20 SCREEN_HEIGHT EQU 18 SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels diff --git a/constants/palette_constants.asm b/constants/palette_constants.asm index fd5dd24b..177f8b81 100755 --- a/constants/palette_constants.asm +++ b/constants/palette_constants.asm @@ -1,9 +1,13 @@ ; monochrome palette color ids const_def - const WHITE - const LIGHT_GRAY - const DARK_GRAY - const BLACK + const SHADE_WHITE ; %00 + const SHADE_LIGHT ; %01 + const SHADE_DARK ; %10 + const SHADE_BLACK ; %11 +NUM_PAL_COLORS EQU const_value + +PAL_COLOR_SIZE EQU 2 +PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE ; pal/blk packets ; SetPalFunctions indexes (see engine/gfx/palettes.asm) diff --git a/data/maps/special_warps.asm b/data/maps/special_warps.asm index 80f88cc4..56dac3a5 100755 --- a/data/maps/special_warps.asm +++ b/data/maps/special_warps.asm @@ -48,11 +48,11 @@ FirstMapSpec: special_warp_spec REDS_HOUSE_2F, 3, 6, REDS_HOUSE_2 TradeCenterSpec1: special_warp_spec TRADE_CENTER, 3, 4, CLUB -TradeCenterSpec2: +TradeCenterSpec2: special_warp_spec TRADE_CENTER, 6, 4, CLUB -ColosseumSpec1: +ColosseumSpec1: special_warp_spec COLOSSEUM, 3, 4, CLUB -ColosseumSpec2: +ColosseumSpec2: special_warp_spec COLOSSEUM, 6, 4, CLUB diff --git a/data/trainers/special_moves.asm b/data/trainers/special_moves.asm index da19f587..b797d1c7 100755 --- a/data/trainers/special_moves.asm +++ b/data/trainers/special_moves.asm @@ -1,6 +1,6 @@ ; unique moves for gym leaders ; this is not automatic! you have to write the index you want to [wLoneAttackNo] -; first. e.g., erika's script writes 4 to [wLoneAttackNo] to get mega drain, +; first. e.g., erika's script writes 4 to [wLoneAttackNo] to get mega drain, ; the fourth entry in the list. LoneMoves: ; pokemon index, move to give nth pokemon diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index e10b5e0d..0673b518 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -133,7 +133,7 @@ DrawFrameBlock: .afterDrawingTiles ld a, [wFBMode] cp FRAMEBLOCKMODE_02 - jr z, .advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer + jr z, .advanceFrameBlockDestAddr ; skip delay and don't clean OAM buffer ld a, [wSubAnimFrameDelay] ld c, a call DelayFrames @@ -2410,7 +2410,7 @@ FallingObjects_InitXCoords: ret FallingObjects_InitialXCoords: - db $38,$40,$50,$60,$70,$88,$90,$56,$67,$4A,$77,$84,$98,$32,$22,$5C,$6C,$7D,$8E,$99 + db $38, $40, $50, $60, $70, $88, $90, $56, $67, $4A, $77, $84, $98, $32, $22, $5C, $6C, $7D, $8E, $99 FallingObjects_InitMovementData: ld hl, wFallingObjectsMovementData @@ -2426,7 +2426,7 @@ FallingObjects_InitMovementData: ret FallingObjects_InitialMovementData: - db $00,$84,$06,$81,$02,$88,$01,$83,$05,$89,$09,$80,$07,$87,$03,$82,$04,$85,$08,$86 + db $00, $84, $06, $81, $02, $88, $01, $83, $05, $89, $09, $80, $07, $87, $03, $82, $04, $85, $08, $86 AnimationShakeEnemyHUD: ; Shakes the enemy HUD. @@ -2583,7 +2583,7 @@ TossBallAnimation: .PokeBallAnimations: ; sequence of animations that make up the Poké Ball toss - db POOF_ANIM,HIDEPIC_ANIM,SHAKE_ANIM,POOF_ANIM,SHOWPIC_ANIM + db POOF_ANIM, HIDEPIC_ANIM, SHAKE_ANIM, POOF_ANIM, SHOWPIC_ANIM .BlockBall ld a, TOSS_ANIM diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 4628e86a..30ff68bc 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -1098,7 +1098,7 @@ ChooseNextMon: ld a, [wLinkState] cp LINK_STATE_BATTLING jr nz, .notLinkBattle - inc a + inc a ; 1 ld [wActionResultOrTookBattleTurn], a call LinkBattleExchangeData .notLinkBattle @@ -1724,7 +1724,7 @@ SendOutMon: ld hl, wEnemyMonHP ld a, [hli] or [hl] ; is enemy mon HP zero? - jp z, .skipDrawingEnemyHUDAndHPBar; if HP is zero, skip drawing the HUD and HP bar + jp z, .skipDrawingEnemyHUDAndHPBar ; if HP is zero, skip drawing the HUD and HP bar call DrawEnemyHUDAndHPBar .skipDrawingEnemyHUDAndHPBar call DrawPlayerHUDAndHPBar @@ -2017,14 +2017,16 @@ DisplayBattleMenu:: dec a jp nz, .handleBattleMenuInput ; handle menu input if it's not the old man tutorial ; the following happens for the old man tutorial + ; Temporarily save the player name in wGrassRate, + ; which is supposed to get overwritten when entering a + ; map with wild Pokémon. + ; Due to an oversight, the data may not get + ; overwritten (on Cinnabar and Route 21) and the infamous + ; Missingno. glitch can show up. ld hl, wPlayerName ld de, wGrassRate ld bc, NAME_LENGTH - call CopyData ; temporarily save the player name in unused space, - ; which is supposed to get overwritten when entering a - ; map with wild Pokémon. Due to an oversight, the data - ; may not get overwritten (cinnabar) and the infamous - ; Missingno. glitch can show up. + call CopyData ld hl, .oldManName ld de, wPlayerName ld bc, NAME_LENGTH @@ -2206,7 +2208,7 @@ BagWasSelected: OldManItemList: db 1 ; # items db POKE_BALL, 50 - db -1 + db -1 ; end DisplayPlayerBag: ; get the pointer to player's bag when in a normal battle @@ -4101,7 +4103,7 @@ CheckForDisobedience: call GetCurrentMove .canUseMove ld a, $1 - and a; clear Z flag + and a ; clear Z flag ret .cannotUseMove xor a ; set Z flag @@ -4485,7 +4487,7 @@ CalculateDamage: ld b, 4 call Divide -; Update wCurDamage. +; Update wCurDamage. ; Capped at MAX_NEUTRAL_DAMAGE - MIN_NEUTRAL_DAMAGE: 999 - 2 = 997. ld hl, wDamage ld b, [hl] @@ -4574,7 +4576,7 @@ JumpToOHKOMoveEffect: INCLUDE "data/battle/unused_critical_hit_moves.asm" ; determines if attack is a critical hit -; azure heights claims "the fastest pokémon (who are,not coincidentally, +; Azure Heights claims "the fastest pokémon (who are, not coincidentally, ; among the most popular) tend to CH about 20 to 25% of the time." CriticalHitTest: xor a @@ -6302,7 +6304,7 @@ LoadPlayerBackPic: dec a ; is it the old man tutorial? ld de, RedPicBack jr nz, .next - ld de, OldManPic + ld de, OldManPicBack .next ld a, BANK(RedPicBack) call UncompressSpriteFromDE diff --git a/engine/battle/decrement_pp.asm b/engine/battle/decrement_pp.asm index b7c428f7..441bbb81 100644 --- a/engine/battle/decrement_pp.asm +++ b/engine/battle/decrement_pp.asm @@ -37,7 +37,7 @@ DecrementPP: ld a, [wPlayerMoveListIndex] ; which move (0, 1, 2, 3) did we use? ld c, a ld b, 0 - add hl ,bc ; calculate the address in memory of the PP we need to decrement + add hl, bc ; calculate the address in memory of the PP we need to decrement ; based on the move chosen. dec [hl] ; Decrement PP ret diff --git a/engine/battle/effects.asm b/engine/battle/effects.asm index 441d6c1c..f455a407 100644 --- a/engine/battle/effects.asm +++ b/engine/battle/effects.asm @@ -198,7 +198,7 @@ FreezeBurnParalyzeEffect: ret nz ; return if they have a substitute, can't effect them ldh a, [hWhoseTurn] and a - jp nz, opponentAttacker + jp nz, .opponentAttacker ld a, [wEnemyMonStatus] and a jp nz, CheckDefrost ; can't inflict status if opponent is already statused @@ -224,17 +224,17 @@ FreezeBurnParalyzeEffect: ret nc ; do nothing if random value is >= 1A or 4D [no status applied] ld a, b ; what type of effect is this? cp BURN_SIDE_EFFECT1 - jr z, .burn + jr z, .burn1 cp FREEZE_SIDE_EFFECT - jr z, .freeze -; .paralyze + jr z, .freeze1 +; .paralyze1 ld a, 1 << PAR ld [wEnemyMonStatus], a call QuarterSpeedDueToParalysis ; quarter speed of affected mon ld a, ANIM_A9 call PlayBattleAnimation jp PrintMayNotAttackText ; print paralysis text -.burn +.burn1 ld a, 1 << BRN ld [wEnemyMonStatus], a call HalveAttackDueToBurn ; halve attack of affected mon @@ -242,7 +242,7 @@ FreezeBurnParalyzeEffect: call PlayBattleAnimation ld hl, BurnedText jp PrintText -.freeze +.freeze1 call ClearHyperBeam ; resets hyper beam (recharge) condition from target ld a, 1 << FRZ ld [wEnemyMonStatus], a @@ -250,7 +250,7 @@ FreezeBurnParalyzeEffect: call PlayBattleAnimation ld hl, FrozenText jp PrintText -opponentAttacker: +.opponentAttacker ld a, [wBattleMonStatus] ; mostly same as above with addresses swapped for opponent and a jp nz, CheckDefrost @@ -265,10 +265,10 @@ opponentAttacker: ld a, [wEnemyMoveEffect] cp PARALYZE_SIDE_EFFECT1 + 1 ld b, $1a - jr c, .next1 + jr c, .next2 ld b, $4d sub $1e -.next1 +.next2 push af call BattleRandom cp b @@ -276,20 +276,21 @@ opponentAttacker: ret nc ld a, b cp BURN_SIDE_EFFECT1 - jr z, .burn + jr z, .burn2 cp FREEZE_SIDE_EFFECT - jr z, .freeze + jr z, .freeze2 +; .paralyze2 ld a, 1 << PAR ld [wBattleMonStatus], a call QuarterSpeedDueToParalysis jp PrintMayNotAttackText -.burn +.burn2 ld a, 1 << BRN ld [wBattleMonStatus], a call HalveAttackDueToBurn ld hl, BurnedText jp PrintText -.freeze +.freeze2 ; hyper beam bits aren't reseted for opponent's side ld a, 1 << FRZ ld [wBattleMonStatus], a @@ -458,14 +459,14 @@ UpdateStatDone: ld bc, wPlayerMonMinimized ldh a, [hWhoseTurn] and a - jr z, .asm_3f4e6 + jr z, .playerTurn ld hl, wEnemyBattleStatus2 ld de, wEnemyMoveNum ld bc, wEnemyMonMinimized -.asm_3f4e6 +.playerTurn ld a, [de] cp MINIMIZE - jr nz, .asm_3f4f9 + jr nz, .notMinimize ; if a substitute is up, slide off the substitute and show the mon pic before ; playing the minimize animation bit HAS_SUBSTITUTE_UP, [hl] @@ -476,7 +477,7 @@ UpdateStatDone: push de call nz, Bankswitch pop de -.asm_3f4f9 +.notMinimize call PlayCurrentMoveAnimation ld a, [de] cp MINIMIZE diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm index 6760c3d5..9c1ad96f 100644 --- a/engine/battle/ghost_marowak_anim.asm +++ b/engine/battle/ghost_marowak_anim.asm @@ -74,7 +74,7 @@ CopyMonPicFromBGToSpriteVRAM: ld [hli], a ld a, d ld [hli], a - ld a, $10 ; use OBP1 + ld a, OAM_OBP1 ld [hli], a inc d dec c diff --git a/engine/battle/move_effects/heal.asm b/engine/battle/move_effects/heal.asm index e9fb62a7..c3ffda65 100644 --- a/engine/battle/move_effects/heal.asm +++ b/engine/battle/move_effects/heal.asm @@ -86,7 +86,7 @@ HealEffect_: ld [wHPBarNewHP], a .playAnim ld hl, PlayCurrentMoveAnimation - call BankswitchEtoF + call EffectCallBattleCore ldh a, [hWhoseTurn] and a hlcoord 10, 9 @@ -98,14 +98,14 @@ HealEffect_: ld [wHPBarType], a predef UpdateHPBar2 ld hl, DrawHUDsAndHPBars - call BankswitchEtoF + call EffectCallBattleCore ld hl, RegainedHealthText jp PrintText .failed ld c, 50 call DelayFrames ld hl, PrintButItFailedText_ - jp BankswitchEtoF + jp EffectCallBattleCore StartedSleepingEffect: text_far _StartedSleepingEffect diff --git a/engine/battle/move_effects/reflect_light_screen.asm b/engine/battle/move_effects/reflect_light_screen.asm index 7bdc7be7..46c299e9 100644 --- a/engine/battle/move_effects/reflect_light_screen.asm +++ b/engine/battle/move_effects/reflect_light_screen.asm @@ -23,14 +23,14 @@ ReflectLightScreenEffect_: .playAnim push hl ld hl, PlayCurrentMoveAnimation - call BankswitchEtoF + call EffectCallBattleCore pop hl jp PrintText .moveFailed ld c, 50 call DelayFrames ld hl, PrintButItFailedText_ - jp BankswitchEtoF + jp EffectCallBattleCore LightScreenProtectedText: text_far _LightScreenProtectedText @@ -40,6 +40,6 @@ ReflectGainedArmorText: text_far _ReflectGainedArmorText text_end -BankswitchEtoF: +EffectCallBattleCore: ld b, BANK(BattleCore) jp Bankswitch diff --git a/engine/battle/move_effects/transform.asm b/engine/battle/move_effects/transform.asm index 46cea51c..56dda7f4 100644 --- a/engine/battle/move_effects/transform.asm +++ b/engine/battle/move_effects/transform.asm @@ -141,7 +141,7 @@ TransformEffect_: .failed ld hl, PrintButItFailedText_ - jp BankswitchEtoF + jp EffectCallBattleCore TransformedText: text_far _TransformedText diff --git a/engine/battle/read_trainer_party.asm b/engine/battle/read_trainer_party.asm index 7e5c1249..a0132a4f 100755 --- a/engine/battle/read_trainer_party.asm +++ b/engine/battle/read_trainer_party.asm @@ -16,7 +16,7 @@ ReadTrainer: ; get the pointer to trainer data for this class ld a, [wCurOpponent] - sub $C9 ; convert value from pokemon to trainer + sub OPP_ID_OFFSET + 1 ; convert value from pokemon to trainer add a ld hl, TrainerDataPointers ld c, a @@ -79,7 +79,7 @@ ReadTrainer: pop hl jr .SpecialTrainer .AddLoneMove -; does the trainer have a single monster with a different move +; does the trainer have a single monster with a different move? ld a, [wLoneAttackNo] ; Brock is 01, Misty is 02, Erika is 04, etc and a jr z, .AddTeamMove diff --git a/engine/battle/safari_zone.asm b/engine/battle/safari_zone.asm index 4f01c2f4..a61f402f 100755 --- a/engine/battle/safari_zone.asm +++ b/engine/battle/safari_zone.asm @@ -2,18 +2,18 @@ PrintSafariZoneBattleText: ld hl, wSafariBaitFactor ld a, [hl] and a - jr z, .asm_4284 + jr z, .no_bait dec [hl] ld hl, SafariZoneEatingText - jr .asm_429f -.asm_4284 + jr .done +.no_bait dec hl ld a, [hl] and a ret z dec [hl] ld hl, SafariZoneAngryText - jr nz, .asm_429f + jr nz, .done push hl ld a, [wEnemyMonSpecies] ld [wd0b5], a @@ -21,7 +21,7 @@ PrintSafariZoneBattleText: ld a, [wMonHCatchRate] ld [wEnemyMonActualCatchRate], a pop hl -.asm_429f +.done push hl call LoadScreenTilesFromBuffer1 pop hl diff --git a/engine/battle/scale_sprites.asm b/engine/battle/scale_sprites.asm index 87b4398d..8b8942e6 100644 --- a/engine/battle/scale_sprites.asm +++ b/engine/battle/scale_sprites.asm @@ -4,11 +4,11 @@ ScaleSpriteByTwo: ld de, sSpriteBuffer1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped ld hl, sSpriteBuffer0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer - call ScaleLastSpriteColumnByTwo ; last tile column is special case - call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns + call ScaleLastSpriteColumnByTwo ; last tile column is special case + call ScaleFirstThreeSpriteColumnsByTwo ; scale first 3 tile columns ld de, sSpriteBuffer2 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped ld hl, sSpriteBuffer1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer - call ScaleLastSpriteColumnByTwo ; last tile column is special case + call ScaleLastSpriteColumnByTwo ; last tile column is special case ScaleFirstThreeSpriteColumnsByTwo: ld b, $3 ; 3 tile columns diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index 2225dca1..0de67f42 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -294,7 +294,7 @@ TrainerAI: ret z ; if not a trainer, we're done here ld a, [wLinkState] cp LINK_STATE_BATTLING - ret z + ret z ; if in a link battle, we're done as well ld a, [wTrainerClass] ; what trainer class is this? dec a ld c, a diff --git a/engine/gfx/palettes.asm b/engine/gfx/palettes.asm index f25ff215..a43c66ba 100755 --- a/engine/gfx/palettes.asm +++ b/engine/gfx/palettes.asm @@ -353,10 +353,10 @@ SendSGBPacket: ld d, a .nextBit0 bit 0, d -; if 0th bit is not zero set P14=HIGH,P15=LOW (send bit 1) +; if 0th bit is not zero set P14=HIGH, P15=LOW (send bit 1) ld a, $10 jr nz, .next0 -; else (if 0th bit is zero) set P14=LOW,P15=HIGH (send bit 0) +; else (if 0th bit is zero) set P14=LOW, P15=HIGH (send bit 0) ld a, $20 .next0 ldh [rJOYP], a @@ -364,7 +364,7 @@ SendSGBPacket: ld a, $30 ldh [rJOYP], a ; rotation will put next bit in 0th position (so we can always use command -; "bit 0,d" to fetch the bit that has to be sent) +; "bit 0, d" to fetch the bit that has to be sent) rr d ; decrease bit counter so we know when we have sent all 8 bits of current byte dec e @@ -608,9 +608,7 @@ CopySGBBorderTiles: ; This function converts 2BPP planar data into this format by mapping ; 2BPP colors 0-3 to 4BPP colors 0-3. 4BPP colors 4-15 are not used. ld b, 128 - .tileLoop - ; Copy bit planes 1 and 2 of the tile data. ld c, 16 .copyLoop diff --git a/engine/gfx/screen_effects.asm b/engine/gfx/screen_effects.asm index e8648901..c7a68734 100755 --- a/engine/gfx/screen_effects.asm +++ b/engine/gfx/screen_effects.asm @@ -1,4 +1,4 @@ -; b = new colour for BG colour 0 (usually white) for 4 frames +; b = new color for BG color 0 (usually white) for 4 frames ChangeBGPalColor0_4Frames: call GetPredefRegisters ldh a, [rBGP] diff --git a/engine/items/inventory.asm b/engine/items/inventory.asm index bf433175..ec1cfd0f 100644 --- a/engine/items/inventory.asm +++ b/engine/items/inventory.asm @@ -27,7 +27,7 @@ AddItemToInventory_:: ld a, [hli] and a jr z, .addNewItem -.loop +.notAtEndOfInventory ld a, [hli] ld b, a ; b = ID of current item in table ld a, [wcf91] ; a = ID of item being added @@ -36,7 +36,7 @@ AddItemToInventory_:: inc hl ld a, [hl] cp $ff ; is it the end of the table? - jr nz, .loop + jr nz, .notAtEndOfInventory .addNewItem ; add an item not yet in the inventory pop hl ld a, d @@ -73,7 +73,7 @@ AddItemToInventory_:: ; if so, store 99 in the current slot and store the rest in a new slot ld a, 99 ld [hli], a - jp .loop + jp .notAtEndOfInventory .increaseItemQuantityFailed pop hl and a diff --git a/engine/link/print_waiting_text.asm b/engine/link/print_waiting_text.asm index d74d635f..1a16e2f2 100644 --- a/engine/link/print_waiting_text.asm +++ b/engine/link/print_waiting_text.asm @@ -1,15 +1,16 @@ PrintWaitingText:: hlcoord 3, 10 - ld b, $1 - ld c, $b + ld b, 1 + ld c, 11 ld a, [wIsInBattle] and a - jr z, .asm_4c17 + jr z, .trade +; battle call TextBoxBorder - jr .asm_4c1a -.asm_4c17 + jr .border_done +.trade call CableClub_TextBoxBorder -.asm_4c1a +.border_done hlcoord 4, 11 ld de, WaitingText call PlaceString diff --git a/engine/math/bcd.asm b/engine/math/bcd.asm index 1e5aedc9..5747a684 100644 --- a/engine/math/bcd.asm +++ b/engine/math/bcd.asm @@ -1,6 +1,9 @@ +; divide hMoney by hDivideBCDDivisor +; return output in hDivideBCDQuotient (same as hDivideBCDDivisor) +; used only to halve player money upon losing a fight DivideBCDPredef:: DivideBCDPredef2:: -DivideBCDPredef3:: +DivideBCDPredef3:: ; only used function DivideBCDPredef4:: call GetPredefRegisters @@ -10,7 +13,7 @@ DivideBCD:: ldh [hDivideBCDBuffer+1], a ldh [hDivideBCDBuffer+2], a ld d, $1 -.mulBy10Loop +.mulBy10Loop ; multiply the divisor by 10 until the leading digit is nonzero ; to set up the standard long division algorithm ldh a, [hDivideBCDDivisor] @@ -40,6 +43,7 @@ DivideBCD:: and $f0 ldh [hDivideBCDDivisor+2], a jr .mulBy10Loop + .next push de push de @@ -104,7 +108,7 @@ DivideBCD:: ldh a, [hDivideBCDBuffer+2] ldh [hDivideBCDQuotient+2], a pop de - ld a, $6 + ld a, $6 sub d and a ret z @@ -151,8 +155,8 @@ DivideBCD_getNextDigit: pop bc ret c inc b - ld de, hMoney+2 ; since SubBCD works starting from the least significant digit - ld hl, hDivideBCDDivisor+2 + ld de, hMoney + 2 ; since SubBCD works starting from the least significant digit + ld hl, hDivideBCDDivisor + 2 push bc call SubBCD pop bc diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm index 040d643d..9813d67c 100755 --- a/engine/movie/intro.asm +++ b/engine/movie/intro.asm @@ -23,7 +23,7 @@ PlayIntro: PlayIntroScene: ld b, SET_PAL_NIDORINO_INTRO call RunPaletteCommand - ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE + ldpal a, SHADE_BLACK, SHADE_DARK, SHADE_LIGHT, SHADE_WHITE ldh [rBGP], a ldh [rOBP0], a ldh [rOBP1], a @@ -307,7 +307,7 @@ PlayShootingStar: ld b, SET_PAL_GAME_FREAK_INTRO call RunPaletteCommand farcall LoadCopyrightAndTextBoxTiles - ldPal a, BLACK, DARK_GRAY, LIGHT_GRAY, WHITE + ldpal a, SHADE_BLACK, SHADE_DARK, SHADE_LIGHT, SHADE_WHITE ldh [rBGP], a ld c, 180 call DelayFrames diff --git a/engine/pokemon/add_mon.asm b/engine/pokemon/add_mon.asm index d7e7eab1..c49a0a77 100644 --- a/engine/pokemon/add_mon.asm +++ b/engine/pokemon/add_mon.asm @@ -430,7 +430,7 @@ _MoveMon:: cp PARTY_TO_DAYCARE ld de, wDayCareMonOT jr z, .findOTsrc - dec a + dec a ld hl, wPartyMonOT ld a, [wPartyCount] jr nz, .addOToffset diff --git a/gfx/battle/oldman.png b/gfx/battle/oldmanb.png Binary files differindex 6d48000f..6d48000f 100644 --- a/gfx/battle/oldman.png +++ b/gfx/battle/oldmanb.png diff --git a/gfx/pics.asm b/gfx/pics.asm index 0e2adc24..94286c9a 100644 --- a/gfx/pics.asm +++ b/gfx/pics.asm @@ -264,7 +264,7 @@ StarmiePicFront:: INCBIN "gfx/pokemon/front/starmie.pic" StarmiePicBack:: INCBIN "gfx/pokemon/back/starmieb.pic" RedPicBack:: INCBIN "gfx/player/redb.pic" -OldManPic:: INCBIN "gfx/battle/oldman.pic" +OldManPicBack:: INCBIN "gfx/battle/oldmanb.pic" SECTION "Pics 5", ROMX diff --git a/home/clear_sprites.asm b/home/clear_sprites.asm index 34f4b4ec..79cc99d6 100644 --- a/home/clear_sprites.asm +++ b/home/clear_sprites.asm @@ -1,7 +1,7 @@ ClearSprites:: xor a ld hl, wOAMBuffer - ld b, 40 * 4 + ld b, wOAMBufferEnd - wOAMBuffer .loop ld [hli], a dec b diff --git a/home/fade.asm b/home/fade.asm index 32175e16..f5ddf964 100644 --- a/home/fade.asm +++ b/home/fade.asm @@ -1,7 +1,7 @@ ; These routines manage gradual fading ; (e.g., entering a doorway) LoadGBPal:: - ld a, [wMapPalOffset] ;tells if wCurMap is dark (requires HM5_FLASH?) + ld a, [wMapPalOffset] ; tells if wCurMap is dark (requires HM5_FLASH?) ld b, a ld hl, FadePal4 ld a, l diff --git a/home/init.asm b/home/init.asm index e3f5fdd4..fe7dc9a9 100644 --- a/home/init.asm +++ b/home/init.asm @@ -126,7 +126,7 @@ ClearVram:: StopAllSounds:: - ld a, BANK(Audio1_UpdateMusic) + ld a, BANK("Audio Engine 1") ld [wAudioROMBank], a ld [wAudioSavedROMBank], a xor a diff --git a/home/inventory.asm b/home/inventory.asm index ebaa4047..1100666f 100644 --- a/home/inventory.asm +++ b/home/inventory.asm @@ -22,15 +22,7 @@ AddAmountSoldToMoney:: ; [wWhichPokemon] = index (within the inventory) of the item to remove ; [wItemQuantity] = quantity to remove RemoveItemFromInventory:: - ldh a, [hLoadedROMBank] - push af - ld a, BANK(RemoveItemFromInventory_) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call RemoveItemFromInventory_ - pop af - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall RemoveItemFromInventory_ ret ; function to add an item (in varying quantities) to the player's bag or PC box @@ -41,15 +33,6 @@ RemoveItemFromInventory:: ; sets carry flag if successful, unsets carry flag if unsuccessful AddItemToInventory:: push bc - ldh a, [hLoadedROMBank] - push af - ld a, BANK(AddItemToInventory_) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call AddItemToInventory_ - pop bc - ld a, b - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall_sf AddItemToInventory_ pop bc ret diff --git a/home/joypad.asm b/home/joypad.asm index 51a77fcc..9bc8663e 100644 --- a/home/joypad.asm +++ b/home/joypad.asm @@ -7,9 +7,9 @@ ReadJoypad:: ld c, 0 ldh [rJOYP], a - REPT 6 +REPT 6 ldh a, [rJOYP] - ENDR +ENDR cpl and %1111 swap a @@ -17,9 +17,9 @@ ReadJoypad:: ld a, 1 << 4 ; select button keys ldh [rJOYP], a - REPT 10 +REPT 10 ldh a, [rJOYP] - ENDR +ENDR cpl and %1111 or b diff --git a/home/math.asm b/home/math.asm index b081b540..59eda606 100644 --- a/home/math.asm +++ b/home/math.asm @@ -26,15 +26,7 @@ Divide:: push hl push de push bc - ldh a, [hLoadedROMBank] - push af - ld a, BANK(_Divide) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call _Divide - pop af - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall _Divide pop bc pop de pop hl diff --git a/home/move_mon.asm b/home/move_mon.asm index 3e69e6d0..c766fbd5 100644 --- a/home/move_mon.asm +++ b/home/move_mon.asm @@ -231,27 +231,9 @@ CalcStat:: ret AddEnemyMonToPlayerParty:: - ldh a, [hLoadedROMBank] - push af - ld a, BANK(_AddEnemyMonToPlayerParty) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call _AddEnemyMonToPlayerParty - pop bc - ld a, b - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall_sf _AddEnemyMonToPlayerParty ret MoveMon:: - ldh a, [hLoadedROMBank] - push af - ld a, BANK(_MoveMon) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call _MoveMon - pop bc - ld a, b - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall_sf _MoveMon ret diff --git a/home/overworld.asm b/home/overworld.asm index 9d5e42ef..a9cfba24 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -2321,16 +2321,16 @@ LoadMapData:: ; copy current map view to VRAM hlcoord 0, 0 ld de, vBGMap0 - ld b, 18 + ld b, SCREEN_HEIGHT .vramCopyLoop - ld c, 20 + ld c, SCREEN_WIDTH .vramCopyInnerLoop ld a, [hli] ld [de], a inc e dec c jr nz, .vramCopyInnerLoop - ld a, 32 - 20 + ld a, BG_MAP_WIDTH - SCREEN_WIDTH add e ld e, a jr nc, .noCarry @@ -2366,15 +2366,15 @@ SwitchToMapRomBank:: ld c, a ld b, $00 ld a, BANK(MapHeaderBanks) - call BankswitchHome ; switch to ROM bank 3 + call BankswitchHome ld hl, MapHeaderBanks add hl, bc ld a, [hl] - ldh [hMapROMBank], a ; save map ROM bank + ldh [hMapROMBank], a call BankswitchBack ldh a, [hMapROMBank] ldh [hLoadedROMBank], a - ld [MBC1RomBank], a ; switch to map ROM bank + ld [MBC1RomBank], a pop bc pop hl ret @@ -2395,7 +2395,7 @@ ResetUsingStrengthOutOfBattleBit: ForceBikeOrSurf:: ld b, BANK(RedSprite) - ld hl, LoadPlayerSpriteGraphics + ld hl, LoadPlayerSpriteGraphics ; in bank 0 call Bankswitch jp PlayDefaultMusic ; update map/player state? diff --git a/home/pokemon.asm b/home/pokemon.asm index d018843e..5406c0ad 100644 --- a/home/pokemon.asm +++ b/home/pokemon.asm @@ -325,16 +325,7 @@ PrintStatusCondition:: ret PrintStatusConditionNotFainted:: - ldh a, [hLoadedROMBank] - push af - ld a, BANK(PrintStatusAilment) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call PrintStatusAilment ; print status condition - pop bc - ld a, b - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall_sf PrintStatusAilment ret ; function to print pokemon level, leaving off the ":L" if the level is at least 100 diff --git a/home/start.asm b/home/start.asm index 448b6362..764f9468 100644 --- a/home/start.asm +++ b/home/start.asm @@ -4,7 +4,7 @@ _Start:: xor a jr .ok .gbc - ld a, 0 + ld a, FALSE .ok ld [wGBC], a jp Init diff --git a/home/text_script.asm b/home/text_script.asm index b9c3c8e4..a6881dc5 100644 --- a/home/text_script.asm +++ b/home/text_script.asm @@ -146,15 +146,7 @@ DisplayPokemartDialogue:: call LoadItemList ld a, PRICEDITEMLISTMENU ld [wListMenuID], a - ldh a, [hLoadedROMBank] - push af - ld a, BANK(DisplayPokemartDialogue_) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call DisplayPokemartDialogue_ - pop af - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall DisplayPokemartDialogue_ jp AfterDisplayingTextID PokemartGreetingText:: @@ -185,15 +177,7 @@ DisplayPokemonCenterDialogue:: ldh [hItemPrice + 2], a inc hl - ldh a, [hLoadedROMBank] - push af - ld a, BANK(DisplayPokemonCenterDialogue_) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call DisplayPokemonCenterDialogue_ - pop af - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall DisplayPokemonCenterDialogue_ jp AfterDisplayingTextID DisplaySafariGameOverText:: diff --git a/home/textbox.asm b/home/textbox.asm index 5067b044..f95c72c7 100644 --- a/home/textbox.asm +++ b/home/textbox.asm @@ -3,14 +3,5 @@ ; [wTextBoxID] = text box ID ; b, c = y, x cursor position (TWO_OPTION_MENU only) DisplayTextBoxID:: - ldh a, [hLoadedROMBank] - push af - ld a, BANK(DisplayTextBoxID_) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call DisplayTextBoxID_ - pop bc - ld a, b - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall_sf DisplayTextBoxID_ ret diff --git a/home/uncompress.asm b/home/uncompress.asm index 9d08aa60..d3d84b26 100644 --- a/home/uncompress.asm +++ b/home/uncompress.asm @@ -561,7 +561,7 @@ ResetSpriteBufferPointers:: ; maps each nybble to its reverse NybbleReverseTable:: - db $0, $8, $4, $c, $2, $a, $6 ,$e, $1, $9, $5, $d, $3, $b, $7 ,$f + db $0, $8, $4, $c, $2, $a, $6, $e, $1, $9, $5, $d, $3, $b, $7, $f ; combines the two loaded chunks with xor (the chunk loaded second is the destination). Both chunks are differeintial decoded beforehand. UnpackSpriteMode2:: diff --git a/home/update_sprites.asm b/home/update_sprites.asm index 80ea14d3..5530c2a4 100644 --- a/home/update_sprites.asm +++ b/home/update_sprites.asm @@ -2,13 +2,5 @@ UpdateSprites:: ld a, [wUpdateSpritesEnabled] dec a ret nz - ldh a, [hLoadedROMBank] - push af - ld a, BANK(_UpdateSprites) - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a - call _UpdateSprites - pop af - ldh [hLoadedROMBank], a - ld [MBC1RomBank], a + homecall _UpdateSprites ret @@ -96,8 +96,8 @@ hTilePlayerStandingOn:: db hSpritePriority:: db UNION -;; Multiplication and division variables are meant -;; to overlap for back-to-back usage. Big endian. +; Multiplication and division variables are meant +; to overlap for back-to-back usage. Big endian. UNION ds 1 hMultiplicand:: ds 3 diff --git a/macros/code.asm b/macros/code.asm index 8507b1ad..e0b3e9c9 100755 --- a/macros/code.asm +++ b/macros/code.asm @@ -4,7 +4,7 @@ lb: MACRO ; r, hi, lo ld \1, ((\2) & $ff) << 8 + ((\3) & $ff) ENDM -ldPal: MACRO +ldpal: MACRO ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5 ENDM diff --git a/macros/farcall.asm b/macros/farcall.asm index 122e5207..93f8f1ac 100644 --- a/macros/farcall.asm +++ b/macros/farcall.asm @@ -33,3 +33,16 @@ homecall: MACRO ldh [hLoadedROMBank], a ld [MBC1RomBank], a ENDM + +homecall_sf: MACRO ; homecall but save flags by popping into bc instead of af + ldh a, [hLoadedROMBank] + push af + ld a, BANK(\1) + ldh [hLoadedROMBank], a + ld [MBC1RomBank], a + call \1 + pop bc + ld a, b + ldh [hLoadedROMBank], a + ld [MBC1RomBank], a +ENDM @@ -239,32 +239,40 @@ SECTION "OAM Buffer", WRAM0 wOAMBuffer:: ; buffer for OAM data. Copied to OAM by DMA ds 4 * 40 +wOAMBufferEnd:: wTileMap:: ; buffer for tiles that are visible on screen (20 columns by 18 rows) - ds 20 * 18 - -wSerialPartyMonsPatchList:: -; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer + ds SCREEN_WIDTH * SCREEN_HEIGHT +UNION wTileMapBackup:: ; buffer for temporarily saving and restoring current screen's tiles ; (e.g. if menus are drawn on top) -; ds 20 * 18 + ds SCREEN_WIDTH * SCREEN_HEIGHT +NEXTU +wSerialPartyMonsPatchList:: +; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer ds 200 wSerialEnemyMonsPatchList:: ; list of indexes to patch with SERIAL_NO_DATA_BYTE after transfer ds 200 +ENDU ds 80 -wTempPic:: +UNION wOverworldMap:: ds 1300 wOverworldMapEnd:: +NEXTU +wTempPic:: + ds 7 * 7 tiles +ENDU + wRedrawRowOrColumnSrcTiles:: ; the tiles of the row or column to be redrawn by RedrawRowOrColumn ds SCREEN_WIDTH * 2 @@ -399,9 +407,8 @@ wUnknownSerialCounter:: ; 2 bytes wEnteringCableClub:: - ds 1 - - ds 1 +; 1 byte + ds 2 wWhichTradeMonSelectionMenu:: ; $00 = player mons @@ -509,15 +516,24 @@ wAnimPalette:: ds 29 +UNION wNPCMovementDirections2:: + ds 10 +NEXTU wSwitchPartyMonTempBuffer:: ; temporary buffer when swapping party mon data + ds 49 + +NEXTU ds 10 wNumStepsToTake:: ; used in Pallet Town scripted movement - ds 49 + ds 1 +ENDU + + ds 10 wRLEByteCount:: ds 1 @@ -595,7 +611,7 @@ wTotalPayDayMoney:: wSafariEscapeFactor:: ds 1 wSafariBaitFactor:: - ds 1; + ds 1 ds 1 @@ -823,8 +839,6 @@ wCoordIndex:: wOptionsTextSpeedCursorX:: -wBoxNumString:: - wTrainerInfoTextBoxWidthPlus1:: wSwappedMenuItem:: @@ -861,6 +875,8 @@ wPlayerSpinInPlaceAnimFrameDelay:: wPlayerSpinWhileMovingUpOrDownAnimDeltaY:: +wBoxNumString:: + wHiddenObjectFunctionArgument:: wWhichTrade:: @@ -1350,7 +1366,9 @@ wExpAmountGained:: ; 2-byte big-endian number ; the total amount of exp a mon gained -wcf4b:: ds 2 ; storage buffer for various strings +wcf4b:: +; storage buffer for various strings + ds 2 wGainBoostedExp:: ds 1 @@ -1987,7 +2005,6 @@ wSavedTilesetType:: ds 2 - wDamage:: ds 2 @@ -2725,7 +2742,8 @@ wPokemonMansionB1FCurScript:: wVictoryRoad2FCurScript:: ds 1 wVictoryRoad3FCurScript:: - ds 2 + ds 1 + ds 1 wFightingDojoCurScript:: ds 1 wSilphCo2FCurScript:: @@ -2972,7 +2990,9 @@ wFlags_D733:: wBeatLorelei:: ; bit 1: set when you beat Lorelei and reset in Indigo Plateau lobby ; the game uses this to tell when Elite 4 events need to be reset - ds 2 + ds 1 + + ds 1 wd736:: ; bit 0: check if the player is standing on a door and make him walk down a step if so @@ -3010,6 +3030,7 @@ wSecondLockTrashCanIndex:: ds 1 ds 2 + wEventFlags:: flag_array NUM_EVENTS @@ -3020,7 +3041,7 @@ wGrassRate:: ds 1 wGrassMons:: - ;ds 20 +; ds 20 ds 11 ; Overload wGrassMons @@ -3119,6 +3140,7 @@ wBoxDataEnd:: SECTION "Stack", WRAM0 + wStack:: |