diff --git a/constants/script_constants.asm b/constants/script_constants.asm index 8d5cc46f7..bd03be5b9 100644 --- a/constants/script_constants.asm +++ b/constants/script_constants.asm @@ -148,7 +148,7 @@ CMDQUEUE_CAPACITY EQU 4 ; HandleQueuedCommand.Jumptable indexes (see engine/overworld/events.asm) const_def const CMDQUEUE_NULL - const CMDQUEUE_NULL2 + const CMDQUEUE_TYPE1 const CMDQUEUE_STONETABLE const CMDQUEUE_TYPE3 const CMDQUEUE_TYPE4 diff --git a/engine/overworld/cmd_queue.asm b/engine/overworld/cmd_queue.asm new file mode 100644 index 000000000..414281565 --- /dev/null +++ b/engine/overworld/cmd_queue.asm @@ -0,0 +1,302 @@ +ClearCmdQueue:: + ld hl, wCmdQueue + ld de, CMDQUEUE_ENTRY_SIZE + ld c, CMDQUEUE_CAPACITY + xor a +.loop + ld [hl], a + add hl, de + dec c + jr nz, .loop + ret + +HandleCmdQueue:: + ld hl, wCmdQueue + xor a +.loop + ldh [hMapObjectIndexBuffer], a + ld a, [hl] + and a + jr z, .skip + push hl + ld b, h + ld c, l + call HandleQueuedCommand + pop hl + +.skip + ld de, CMDQUEUE_ENTRY_SIZE + add hl, de + ldh a, [hMapObjectIndexBuffer] + inc a + cp CMDQUEUE_CAPACITY + jr nz, .loop + ret + +Unreferenced_GetNthCmdQueueEntry: + ld hl, wCmdQueue + ld bc, CMDQUEUE_ENTRY_SIZE + call AddNTimes + ld b, h + ld c, l + ret + +WriteCmdQueue:: + push bc + push de + call .GetNextEmptyEntry + ld d, h + ld e, l + pop hl + pop bc + ret c + ld a, b + ld bc, CMDQUEUE_ENTRY_SIZE - 1 + call FarCopyBytes + xor a + ld [hl], a + ret + +.GetNextEmptyEntry: + ld hl, wCmdQueue + ld de, CMDQUEUE_ENTRY_SIZE + ld c, CMDQUEUE_CAPACITY +.loop + ld a, [hl] + and a + jr z, .done + add hl, de + dec c + jr nz, .loop + scf + ret + +.done + ld a, CMDQUEUE_CAPACITY + sub c + and a + ret + +DelCmdQueue:: + ld hl, wCmdQueue + ld de, CMDQUEUE_ENTRY_SIZE + ld c, CMDQUEUE_CAPACITY +.loop + ld a, [hl] + cp b + jr z, .done + add hl, de + dec c + jr nz, .loop + and a + ret + +.done + xor a + ld [hl], a + scf + ret + +_DelCmdQueue: + ld hl, CMDQUEUE_TYPE + add hl, bc + ld [hl], 0 + ret + +HandleQueuedCommand: + ld hl, CMDQUEUE_TYPE + add hl, bc + ld a, [hl] + cp NUM_CMDQUEUE_TYPES + jr c, .okay + xor a + +.okay + ld e, a + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + add hl, de + ld a, [hli] + push af + ld a, [hli] + ld h, [hl] + ld l, a + pop af + rst FarCall + ret + +.Jumptable: + dba CmdQueue_Null + dba CmdQueue_Type1 + dba CmdQueue_StoneTable + dba CmdQueue_Type3 + dba CmdQueue_Type4 + +CmdQueueAnonymousJumptable: + ld hl, CMDQUEUE_05 + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret + +CmdQueueAnonJT_Increment: + ld hl, CMDQUEUE_05 + add hl, bc + inc [hl] + ret + +CmdQueueAnonJT_Decrement: + ld hl, CMDQUEUE_05 + add hl, bc + dec [hl] + ret + +CmdQueue_Null: + ret + +CmdQueue_Type1: + call ret_2f3e + ret + +CmdQueue_Type4: + call CmdQueueAnonymousJumptable + ; anonymous dw + dw .zero + dw .one + +.zero + ldh a, [hSCY] + ld hl, CMDQUEUE_04 + add hl, bc + ld [hl], a + call CmdQueueAnonJT_Increment +.one + ld hl, CMDQUEUE_ADDR + add hl, bc + ld a, [hl] + dec a + ld [hl], a + jr z, .finish + and 1 + jr z, .add + ld hl, CMDQUEUE_02 + add hl, bc + ldh a, [hSCY] + sub [hl] + ldh [hSCY], a + ret + +.add + ld hl, CMDQUEUE_02 + add hl, bc + ldh a, [hSCY] + add [hl] + ldh [hSCY], a + ret + +.finish + ld hl, CMDQUEUE_04 + add hl, bc + ld a, [hl] + ldh [hSCY], a + call _DelCmdQueue + ret + +CmdQueue_Type3: + call CmdQueueAnonymousJumptable + ; anonymous dw + dw .zero + dw .one + dw .two + +.zero + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Increment +.one + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Increment + + ld hl, CMDQUEUE_02 + add hl, bc + ld a, [hl] + ld [wd173], a + ret + +.two + call .IsPlayerFacingDown + jr z, .PlayerNotFacingDown + call CmdQueueAnonJT_Decrement + + ld hl, CMDQUEUE_03 + add hl, bc + ld a, [hl] + ld [wd173], a + ret + +.PlayerNotFacingDown: + ld a, $7f + ld [wd173], a + ld hl, CMDQUEUE_05 + add hl, bc + ld [hl], 0 + ret + +.IsPlayerFacingDown: + push bc + ld bc, wPlayerStruct + call GetSpriteDirection + and a + pop bc + ret + +CmdQueue_StoneTable: + ld de, wPlayerStruct + ld a, NUM_OBJECT_STRUCTS +.loop + push af + + ld hl, OBJECT_SPRITE + add hl, de + ld a, [hl] + and a + jr z, .next + + ld hl, OBJECT_MOVEMENTTYPE + add hl, de + ld a, [hl] + cp SPRITEMOVEDATA_STRENGTH_BOULDER + jr nz, .next + + ld hl, OBJECT_NEXT_TILE + add hl, de + ld a, [hl] + call CheckPitTile + jr nz, .next + + ld hl, OBJECT_DIRECTION_WALKING + add hl, de + ld a, [hl] + cp STANDING + jr nz, .next + call HandleStoneQueue + jr c, .fall_down_hole + +.next + ld hl, OBJECT_LENGTH + add hl, de + ld d, h + ld e, l + + pop af + dec a + jr nz, .loop + ret + +.fall_down_hole + pop af + ret diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index 7c79d41df..f78635cb7 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -1338,305 +1338,4 @@ DoBikeStep:: xor a ret -ClearCmdQueue:: - ld hl, wCmdQueue - ld de, CMDQUEUE_ENTRY_SIZE - ld c, CMDQUEUE_CAPACITY - xor a -.loop - ld [hl], a - add hl, de - dec c - jr nz, .loop - ret - -HandleCmdQueue:: - ld hl, wCmdQueue - xor a -.loop - ldh [hMapObjectIndexBuffer], a - ld a, [hl] - and a - jr z, .skip - push hl - ld b, h - ld c, l - call HandleQueuedCommand - pop hl - -.skip - ld de, CMDQUEUE_ENTRY_SIZE - add hl, de - ldh a, [hMapObjectIndexBuffer] - inc a - cp CMDQUEUE_CAPACITY - jr nz, .loop - ret - -Unreferenced_GetNthCmdQueueEntry: - ld hl, wCmdQueue - ld bc, CMDQUEUE_ENTRY_SIZE - call AddNTimes - ld b, h - ld c, l - ret - -WriteCmdQueue:: - push bc - push de - call .GetNextEmptyEntry - ld d, h - ld e, l - pop hl - pop bc - ret c - ld a, b - ld bc, CMDQUEUE_ENTRY_SIZE - 1 - call FarCopyBytes - xor a - ld [hl], a - ret - -.GetNextEmptyEntry: - ld hl, wCmdQueue - ld de, CMDQUEUE_ENTRY_SIZE - ld c, CMDQUEUE_CAPACITY -.loop - ld a, [hl] - and a - jr z, .done - add hl, de - dec c - jr nz, .loop - scf - ret - -.done - ld a, CMDQUEUE_CAPACITY - sub c - and a - ret - -DelCmdQueue:: - ld hl, wCmdQueue - ld de, CMDQUEUE_ENTRY_SIZE - ld c, CMDQUEUE_CAPACITY -.loop - ld a, [hl] - cp b - jr z, .done - add hl, de - dec c - jr nz, .loop - and a - ret - -.done - xor a - ld [hl], a - scf - ret - -_DelCmdQueue: - ld hl, CMDQUEUE_TYPE - add hl, bc - ld [hl], 0 - ret - -HandleQueuedCommand: - ld hl, CMDQUEUE_TYPE - add hl, bc - ld a, [hl] - cp NUM_CMDQUEUE_TYPES - jr c, .okay - xor a - -.okay - ld e, a - ld d, 0 - ld hl, .Jumptable - add hl, de - add hl, de - add hl, de - ld a, [hli] - push af - ld a, [hli] - ld h, [hl] - ld l, a - pop af - rst FarCall - ret - -.Jumptable: - dba CmdQueue_Null - dba CmdQueue_Null2 - dba CmdQueue_StoneTable - dba CmdQueue_Type3 - dba CmdQueue_Type4 - -CmdQueueAnonymousJumptable: - ld hl, CMDQUEUE_05 - add hl, bc - ld a, [hl] - pop hl - rst JumpTable - ret - -CmdQueueAnonJT_Increment: - ld hl, CMDQUEUE_05 - add hl, bc - inc [hl] - ret - -CmdQueueAnonJT_Decrement: - ld hl, CMDQUEUE_05 - add hl, bc - dec [hl] - ret - -CmdQueue_Null: - ret - -CmdQueue_Null2: - call ret_2f3e - ret - -CmdQueue_Type4: - call CmdQueueAnonymousJumptable - ; anonymous dw - dw .zero - dw .one - -.zero - ldh a, [hSCY] - ld hl, CMDQUEUE_04 - add hl, bc - ld [hl], a - call CmdQueueAnonJT_Increment -.one - ld hl, CMDQUEUE_ADDR - add hl, bc - ld a, [hl] - dec a - ld [hl], a - jr z, .finish - and 1 - jr z, .add - ld hl, CMDQUEUE_02 - add hl, bc - ldh a, [hSCY] - sub [hl] - ldh [hSCY], a - ret - -.add - ld hl, CMDQUEUE_02 - add hl, bc - ldh a, [hSCY] - add [hl] - ldh [hSCY], a - ret - -.finish - ld hl, CMDQUEUE_04 - add hl, bc - ld a, [hl] - ldh [hSCY], a - call _DelCmdQueue - ret - -CmdQueue_Type3: - call CmdQueueAnonymousJumptable - ; anonymous dw - dw .zero - dw .one - dw .two - -.zero - call .IsPlayerFacingDown - jr z, .PlayerNotFacingDown - call CmdQueueAnonJT_Increment -.one - call .IsPlayerFacingDown - jr z, .PlayerNotFacingDown - call CmdQueueAnonJT_Increment - - ld hl, CMDQUEUE_02 - add hl, bc - ld a, [hl] - ld [wd173], a - ret - -.two - call .IsPlayerFacingDown - jr z, .PlayerNotFacingDown - call CmdQueueAnonJT_Decrement - - ld hl, CMDQUEUE_03 - add hl, bc - ld a, [hl] - ld [wd173], a - ret - -.PlayerNotFacingDown: - ld a, $7f - ld [wd173], a - ld hl, CMDQUEUE_05 - add hl, bc - ld [hl], 0 - ret - -.IsPlayerFacingDown: - push bc - ld bc, wPlayerStruct - call GetSpriteDirection - and a - pop bc - ret - -CmdQueue_StoneTable: - ld de, wPlayerStruct - ld a, NUM_OBJECT_STRUCTS -.loop - push af - - ld hl, OBJECT_SPRITE - add hl, de - ld a, [hl] - and a - jr z, .next - - ld hl, OBJECT_MOVEMENTTYPE - add hl, de - ld a, [hl] - cp SPRITEMOVEDATA_STRENGTH_BOULDER - jr nz, .next - - ld hl, OBJECT_NEXT_TILE - add hl, de - ld a, [hl] - call CheckPitTile - jr nz, .next - - ld hl, OBJECT_DIRECTION_WALKING - add hl, de - ld a, [hl] - cp STANDING - jr nz, .next - call HandleStoneQueue - jr c, .fall_down_hole - -.next - ld hl, OBJECT_LENGTH - add hl, de - ld d, h - ld e, l - - pop af - dec a - jr nz, .loop - ret - -.fall_down_hole - pop af - ret +INCLUDE "engine/overworld/cmd_queue.asm" diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm index 6889eed83..d2d6145c7 100644 --- a/engine/overworld/init_map.asm +++ b/engine/overworld/init_map.asm @@ -16,6 +16,7 @@ ReanchorBGMap_NoOAMUpdate:: ldh [hBGMapMode], a pop af ldh [hOAMUpdate], a + ld hl, wVramState set 6, [hl] ret diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 27a09509b..ebc4b8688 100644 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -1846,7 +1846,7 @@ Function5015: ld e, [hl] inc [hl] ld d, 0 - ld hl, wc2e2 + ld hl, wMovementObject ld a, [hli] ld h, [hl] ld l, a diff --git a/engine/overworld/overworld.asm b/engine/overworld/overworld.asm index bc44c7662..f09159f37 100644 --- a/engine/overworld/overworld.asm +++ b/engine/overworld/overworld.asm @@ -142,10 +142,10 @@ LoadUsedSpritesGFX: ld a, MAPCALLBACK_SPRITES call RunMapCallback call GetUsedSprites - call .LoadMiscTiles + call LoadMiscTiles ret -.LoadMiscTiles: +LoadMiscTiles: ld a, [wSpriteFlags] bit 6, a ret nz @@ -234,7 +234,7 @@ GetMonSprite: farcall LoadOverworldMonIcon - ld l, 1 + ld l, WALKING_SPRITE ld h, 0 scf ret @@ -250,8 +250,8 @@ GetMonSprite: jp nz, GetMonSprite .NoBreedmon: - ld a, 1 - ld l, 1 + ld a, WALKING_SPRITE + ld l, WALKING_SPRITE ld h, 0 and a ret diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm index 3446a00c6..8bb9d273e 100644 --- a/engine/overworld/player_object.asm +++ b/engine/overworld/player_object.asm @@ -225,7 +225,7 @@ CopyMapObjectToObjectStruct: ret InitializeVisibleSprites: - ld bc, wMapObjects + MAPOBJECT_LENGTH + ld bc, wMap1Object ld a, 1 .loop ldh [hMapObjectIndexBuffer], a @@ -312,7 +312,7 @@ CheckObjectEnteringVisibleRange:: ld d, a ld a, [wXCoord] ld e, a - ld bc, wMapObjects + MAPOBJECT_LENGTH + ld bc, wMap1Object ld a, 1 .loop_v ldh [hMapObjectIndexBuffer], a @@ -368,7 +368,7 @@ CheckObjectEnteringVisibleRange:: ld e, a ld a, [wYCoord] ld d, a - ld bc, wMapObjects + MAPOBJECT_LENGTH + ld bc, wMap1Object ld a, 1 .loop_h ldh [hMapObjectIndexBuffer], a diff --git a/engine/overworld/scripting.asm b/engine/overworld/scripting.asm index c933c610c..5f93ab396 100644 --- a/engine/overworld/scripting.asm +++ b/engine/overworld/scripting.asm @@ -250,9 +250,6 @@ StopScript: ret Script_callasm: -; script command 0xe -; parameters: asm - call GetScriptByte ld b, a call GetScriptByte @@ -264,9 +261,6 @@ Script_callasm: ret Script_special: -; script command 0xf -; parameters: predefined_script - call GetScriptByte ld e, a call GetScriptByte @@ -275,9 +269,6 @@ Script_special: ret Script_memcallasm: -; script command 0x10 -; parameters: asm - call GetScriptByte ld l, a call GetScriptByte @@ -292,9 +283,6 @@ Script_memcallasm: ret Script_jumptextfaceplayer: -; script command 0x51 -; parameters: text_pointer - ld a, [wScriptBank] ld [wScriptTextBank], a call GetScriptByte @@ -306,9 +294,6 @@ Script_jumptextfaceplayer: jp ScriptJump Script_jumptext: -; script command 0x53 -; parameters: text_pointer - ld a, [wScriptBank] ld [wScriptTextBank], a call GetScriptByte @@ -329,9 +314,6 @@ JumpTextScript: end Script_farjumptext: -; script command 0x52 -; parameters: text_pointer - call GetScriptByte ld [wScriptTextBank], a call GetScriptByte @@ -343,9 +325,6 @@ Script_farjumptext: jp ScriptJump Script_writetext: -; script command 0x4c -; parameters: text_pointer - call GetScriptByte ld l, a call GetScriptByte @@ -356,9 +335,6 @@ Script_writetext: ret Script_farwritetext: -; script command 0x4b -; parameters: text_pointer - call GetScriptByte ld b, a call GetScriptByte @@ -369,9 +345,6 @@ Script_farwritetext: ret Script_repeattext: -; script command 0x4d -; parameters: byte, byte - call GetScriptByte ld l, a call GetScriptByte @@ -394,13 +367,9 @@ Script_repeattext: ret Script_waitbutton: -; script command 0x54 - jp WaitButton Script_promptbutton: -; script command 0x55 - ldh a, [hOAMUpdate] push af ld a, $1 @@ -412,8 +381,6 @@ Script_promptbutton: ret Script_yesorno: -; script command 0x4e - call YesNoBox ld a, FALSE jr c, .no @@ -423,9 +390,6 @@ Script_yesorno: ret Script_loadmenu: -; script command 0x4f -; parameters: menu_header - call GetScriptByte ld l, a call GetScriptByte @@ -437,16 +401,11 @@ Script_loadmenu: ret Script_closewindow: -; script command 0x50 - call CloseWindow call UpdateSprites ret Script_pokepic: -; script command 0x56 -; parameters: pokemon - call GetScriptByte and a jr nz, .ok @@ -457,14 +416,10 @@ Script_pokepic: ret Script_closepokepic: -; script command 0x57 - farcall ClosePokepic ret Script_verticalmenu: -; script command 0x59 - ld a, [wScriptBank] ld hl, VerticalMenu rst FarCall @@ -476,8 +431,6 @@ Script_verticalmenu: ret Script__2dmenu: -; script command 0x58 - ld a, [wScriptBank] ld hl, _2DMenu rst FarCall @@ -489,9 +442,6 @@ Script__2dmenu: ret Script_battletowertext: -; script command 0xa4 -; parameters: bttext_id - call SetUpTextbox call GetScriptByte ld c, a @@ -499,9 +449,6 @@ Script_battletowertext: ret Script_verbosegiveitem: -; script command 0x9e -; parameters: item, quantity - call Script_giveitem call CurItemName ld de, wStringBuffer1 @@ -534,9 +481,6 @@ GiveItemScript: text_end Script_verbosegiveitemvar: -; script command 0x9f -; parameters: item, var - call GetScriptByte cp ITEM_FROM_MEM jr nz, .ok @@ -563,8 +507,6 @@ Script_verbosegiveitemvar: jp ScriptCall Script_itemnotify: -; script command 0x45 - call GetPocketName call CurItemName ld b, BANK(PutItemInPocketText) @@ -573,8 +515,6 @@ Script_itemnotify: ret Script_pocketisfull: -; script command 0x46 - call GetPocketName call CurItemName ld b, BANK(PocketIsFullText) @@ -583,8 +523,6 @@ Script_pocketisfull: ret Script_specialsound: -; script command 0x88 - farcall CheckItemPocket ld a, [wItemAttributeParamBuffer] cp TM_HM @@ -630,9 +568,6 @@ PocketIsFullText: text_end Script_pokemart: -; script command 0x94 -; parameters: mart_type, mart_id - call GetScriptByte ld c, a call GetScriptByte @@ -645,9 +580,6 @@ Script_pokemart: ret Script_elevator: -; script command 0x95 -; parameters: floor_list_pointer - xor a ld [wScriptVar], a call GetScriptByte @@ -663,18 +595,12 @@ Script_elevator: ret Script_trade: -; script command 0x96 -; parameters: trade_id - call GetScriptByte ld e, a farcall NPCTrade ret Script_phonecall: -; script command 0x98 -; parameters: caller_name - call GetScriptByte ld e, a call GetScriptByte @@ -685,15 +611,10 @@ Script_phonecall: ret Script_hangup: -; script command 0x99 - farcall HangUp ret Script_askforphonenumber: -; script command 0x97 -; parameters: number - call YesNoBox jr c, .refused call GetScriptByte @@ -713,9 +634,6 @@ Script_askforphonenumber: ret Script_describedecoration: -; script command 0x9a -; parameters: byte - call GetScriptByte ld b, a farcall DescribeDecoration @@ -724,9 +642,6 @@ Script_describedecoration: jp ScriptJump Script_fruittree: -; script command 0x9b -; parameters: tree_id - call GetScriptByte ld [wCurFruitTree], a ld b, BANK(FruitTreeScript) @@ -734,9 +649,6 @@ Script_fruittree: jp ScriptJump Script_swarm: -; script command 0xa0 -; parameters: flag, map_group, map_id - call GetScriptByte ld c, a call GetScriptByte @@ -747,9 +659,6 @@ Script_swarm: ret Script_trainertext: -; script command 0x62 -; parameters: text_id - call GetScriptByte ld c, a ld b, 0 @@ -765,8 +674,6 @@ Script_trainertext: ret Script_scripttalkafter: -; script command 0x65 - ld hl, wScriptAfterPointer ld a, [hli] ld h, [hl] @@ -776,9 +683,6 @@ Script_scripttalkafter: jp ScriptJump Script_trainerflagaction: -; script command 0x63 -; parameters: action - xor a ld [wScriptVar], a ld hl, wTempTrainerEventFlag @@ -796,9 +700,6 @@ Script_trainerflagaction: ret Script_winlosstext: -; script command 0x64 -; parameters: win_text_pointer, loss_text_pointer - ld hl, wWinTextPointer call GetScriptByte ld [hli], a @@ -812,16 +713,12 @@ Script_winlosstext: ret Script_endifjustbattled: -; script command 0x66 - ld a, [wRunningTrainerBattleScript] and a ret z jp Script_end Script_checkjustbattled: -; script command 0x67 - ld a, TRUE ld [wScriptVar], a ld a, [wRunningTrainerBattleScript] @@ -832,23 +729,16 @@ Script_checkjustbattled: ret Script_encountermusic: -; script command 0x80 - ld a, [wOtherTrainerClass] ld e, a farcall PlayTrainerEncounterMusic ret Script_playmapmusic: -; script command 0x82 - call PlayMapMusic ret Script_playmusic: -; script command 0x7f -; parameters: music_pointer - ld de, MUSIC_NONE call PlayMusic xor a @@ -862,9 +752,6 @@ Script_playmusic: ret Script_musicfadeout: -; script command 0x81 -; parameters: music, fadetime - call GetScriptByte ld [wMusicFadeID], a call GetScriptByte @@ -875,9 +762,6 @@ Script_musicfadeout: ret Script_playsound: -; script command 0x85 -; parameters: sound_pointer - call GetScriptByte ld e, a call GetScriptByte @@ -886,22 +770,15 @@ Script_playsound: ret Script_waitsfx: -; script command 0x86 - call WaitSFX ret Script_warpsound: -; script command 0x87 - farcall GetWarpSFX call PlaySFX ret Script_cry: -; script command 0x84 -; parameters: cry_id - call GetScriptByte push af call GetScriptByte @@ -922,18 +799,12 @@ GetScriptObject: ret Script_setlasttalked: -; script command 0x68 -; parameters: object_id - call GetScriptByte call GetScriptObject ldh [hLastTalked], a ret Script_applymovement: -; script command 0x69 -; parameters: object_id, data - call GetScriptByte call GetScriptObject ld c, a @@ -967,8 +838,6 @@ SetFlagsForMovement_2: ret Script_applymovementlasttalked: -; script command 0x6a -; parameters: data ; apply movement to last talked ldh a, [hLastTalked] @@ -976,8 +845,6 @@ Script_applymovementlasttalked: jp ApplyMovement Script_faceplayer: -; script command 0x6b - ldh a, [hLastTalked] and a ret z @@ -995,9 +862,6 @@ Script_faceplayer: ret Script_faceobject: -; script command 0x6c -; parameters: object1, object2 - call GetScriptByte call GetScriptObject cp LAST_TALKED @@ -1025,9 +889,6 @@ Script_faceobject: ret Script_turnobject: -; script command 0x76 -; parameters: object_id, facing - call GetScriptByte call GetScriptObject cp LAST_TALKED @@ -1088,9 +949,6 @@ ApplyObjectFacing: ret Script_variablesprite: -; script command 0x6d -; parameters: byte, sprite - call GetScriptByte ld e, a ld d, $0 @@ -1101,9 +959,6 @@ Script_variablesprite: ret Script_appear: -; script command 0x6f -; parameters: object_id - call GetScriptByte call GetScriptObject call _CopyObjectStruct @@ -1113,9 +968,6 @@ Script_appear: ret Script_disappear: -; script command 0x6e -; parameters: object_id - call GetScriptByte call GetScriptObject cp LAST_TALKED @@ -1150,9 +1002,6 @@ ApplyEventActionAppearDisappear: ret Script_follow: -; script command 0x70 -; parameters: object2, object1 - call GetScriptByte call GetScriptObject ld b, a @@ -1163,15 +1012,10 @@ Script_follow: ret Script_stopfollow: -; script command 0x71 - farcall StopFollow ret Script_moveobject: -; script command 0x72 -; parameters: object id, x, y - call GetScriptByte call GetScriptObject ld b, a @@ -1185,9 +1029,6 @@ Script_moveobject: ret Script_writeobjectxy: -; script command 0x73 -; parameters: object_id - call GetScriptByte call GetScriptObject cp LAST_TALKED @@ -1199,9 +1040,6 @@ Script_writeobjectxy: ret Script_follownotexact: -; script command 0x77 -; parameters: object2, object1 - call GetScriptByte call GetScriptObject ld b, a @@ -1212,9 +1050,6 @@ Script_follownotexact: ret Script_loademote: -; script command 0x74 -; parameters: bubble - call GetScriptByte cp EMOTE_FROM_MEM jr nz, .not_var_emote @@ -1225,9 +1060,6 @@ Script_loademote: ret Script_showemote: -; script command 0x75 -; parameters: bubble, object_id, time - call GetScriptByte ld [wScriptVar], a call GetScriptByte @@ -1260,9 +1092,6 @@ ShowEmoteScript: step_end Script_earthquake: -; script command 0x78 -; parameters: param - ld hl, EarthquakeMovement ld de, wEarthquakeMovementDataBuffer ld bc, EarthquakeMovement.End - EarthquakeMovement @@ -1286,8 +1115,6 @@ EarthquakeMovement: .End Script_loadpikachudata: -; script command 0x5a - ld a, PIKACHU ld [wTempWildMonSpecies], a ld a, 5 @@ -1295,15 +1122,11 @@ Script_loadpikachudata: ret Script_randomwildmon: -; script command 0x5b - xor a ld [wBattleScriptFlags], a ret Script_loadtemptrainer: -; script command 0x5c - ld a, (1 << 7) | 1 ld [wBattleScriptFlags], a ld a, [wTempTrainerClass] @@ -1313,9 +1136,6 @@ Script_loadtemptrainer: ret Script_loadwildmon: -; script command 0x5d -; parameters: pokemon, level - ld a, (1 << 7) ld [wBattleScriptFlags], a call GetScriptByte @@ -1325,9 +1145,6 @@ Script_loadwildmon: ret Script_loadtrainer: -; script command 0x5e -; parameters: trainer_group, trainer_id - ld a, (1 << 7) | 1 ld [wBattleScriptFlags], a call GetScriptByte @@ -1337,8 +1154,6 @@ Script_loadtrainer: ret Script_startbattle: -; script command 0x5f - call BufferScreen predef StartBattle ld a, [wBattleResult] @@ -1347,9 +1162,6 @@ Script_startbattle: ret Script_catchtutorial: -; script command 0x61 -; parameters: byte - call GetScriptByte ld [wBattleType], a call BufferScreen @@ -1357,8 +1169,6 @@ Script_catchtutorial: jp Script_reloadmap Script_reloadmapafterbattle: -; script command 0x60 - ld hl, wBattleScriptFlags ld d, [hl] ld [hl], 0 @@ -1387,8 +1197,6 @@ Script_reloadmapafterbattle: jp Script_reloadmap Script_reloadmap: -; script command 0x7b - xor a ld [wBattleScriptFlags], a ld a, MAPSETUP_RELOADMAP @@ -1399,9 +1207,6 @@ Script_reloadmap: ret Script_scall: -; script command 0x0 -; parameters: pointer - ld a, [wScriptBank] ld b, a call GetScriptByte @@ -1411,9 +1216,6 @@ Script_scall: jr ScriptCall Script_farscall: -; script command 0x1 -; parameters: pointer - call GetScriptByte ld b, a call GetScriptByte @@ -1423,9 +1225,6 @@ Script_farscall: jr ScriptCall Script_memcall: -; script command 0x2 -; parameters: pointer - call GetScriptByte ld l, a call GetScriptByte @@ -1475,9 +1274,6 @@ CallCallback:: jp ScriptCall Script_sjump: -; script command 0x3 -; parameters: pointer - call GetScriptByte ld l, a call GetScriptByte @@ -1487,9 +1283,6 @@ Script_sjump: jp ScriptJump Script_farsjump: -; script command 0x4 -; parameters: pointer - call GetScriptByte ld b, a call GetScriptByte @@ -1499,9 +1292,6 @@ Script_farsjump: jp ScriptJump Script_memjump: -; script command 0x5 -; parameters: pointer - call GetScriptByte ld l, a call GetScriptByte @@ -1514,27 +1304,18 @@ Script_memjump: jp ScriptJump Script_iffalse: -; script command 0x8 -; parameters: pointer - ld a, [wScriptVar] and a jp nz, SkipTwoScriptBytes jp Script_sjump Script_iftrue: -; script command 0x9 -; parameters: pointer - ld a, [wScriptVar] and a jp nz, Script_sjump jp SkipTwoScriptBytes Script_ifequal: -; script command 0x6 -; parameters: byte, pointer - call GetScriptByte ld hl, wScriptVar cp [hl] @@ -1542,9 +1323,6 @@ Script_ifequal: jr SkipTwoScriptBytes Script_ifnotequal: -; script command 0x7 -; parameters: byte, pointer - call GetScriptByte ld hl, wScriptVar cp [hl] @@ -1552,9 +1330,6 @@ Script_ifnotequal: jr SkipTwoScriptBytes Script_ifgreater: -; script command 0xa -; parameters: byte, pointer - ld a, [wScriptVar] ld b, a call GetScriptByte @@ -1563,9 +1338,6 @@ Script_ifgreater: jr SkipTwoScriptBytes Script_ifless: -; script command 0xb -; parameters: byte, pointer - call GetScriptByte ld b, a ld a, [wScriptVar] @@ -1574,16 +1346,10 @@ Script_ifless: jr SkipTwoScriptBytes Script_jumpstd: -; script command 0xc -; parameters: predefined_script - call StdScript jr ScriptJump Script_callstd: -; script command 0xd -; parameters: predefined_script - call StdScript ld d, h ld e, l @@ -1621,9 +1387,6 @@ ScriptJump: ret Script_prioritysjump: -; script command 0x8d -; parameters: pointer - ld a, [wScriptBank] ld [wPriorityScriptBank], a call GetScriptByte @@ -1635,8 +1398,6 @@ Script_prioritysjump: ret Script_checkscene: -; script command 0x13 - call CheckScenes jr z, .no_scene ld [wScriptVar], a @@ -1648,9 +1409,6 @@ Script_checkscene: ret Script_checkmapscene: -; script command 0x11 -; parameters: map_group, map_id - call GetScriptByte ld b, a call GetScriptByte @@ -1669,9 +1427,6 @@ Script_checkmapscene: ret Script_setscene: -; script command 0x14 -; parameters: scene_id - ld a, [wMapGroup] ld b, a ld a, [wMapNumber] @@ -1679,9 +1434,6 @@ Script_setscene: jr DoScene Script_setmapscene: -; script command 0x12 -; parameters: map_group, map_id, scene_id - call GetScriptByte ld b, a call GetScriptByte @@ -1697,9 +1449,6 @@ DoScene: ret Script_readmem: -; script command 0x19 -; parameters: address - call GetScriptByte ld l, a call GetScriptByte @@ -1709,9 +1458,6 @@ Script_readmem: ret Script_writemem: -; script command 0x1a -; parameters: address - call GetScriptByte ld l, a call GetScriptByte @@ -1721,9 +1467,6 @@ Script_writemem: ret Script_loadmem: -; script command 0x1b -; parameters: address, value - call GetScriptByte ld l, a call GetScriptByte @@ -1733,17 +1476,11 @@ Script_loadmem: ret Script_setval: -; script command 0x15 -; parameters: value - call GetScriptByte ld [wScriptVar], a ret Script_addval: -; script command 0x16 -; parameters: value - call GetScriptByte ld hl, wScriptVar add [hl] @@ -1751,9 +1488,6 @@ Script_addval: ret Script_random: -; script command 0x17 -; parameters: input - call GetScriptByte ld [wScriptVar], a and a @@ -1804,9 +1538,6 @@ Script_random: ret Script_readvar: -; script command 0x1c -; parameters: variable_id - call GetScriptByte call GetVarAction ld a, [de] @@ -1814,9 +1545,6 @@ Script_readvar: ret Script_writevar: -; script command 0x1d -; parameters: variable_id - call GetScriptByte call GetVarAction ld a, [wScriptVar] @@ -1824,9 +1552,6 @@ Script_writevar: ret Script_loadvar: -; script command 0x1e -; parameters: variable_id, value - call GetScriptByte call GetVarAction call GetScriptByte @@ -1839,8 +1564,6 @@ GetVarAction: ret Script_checkver: -; script command 0x18 - ld a, [.gs_version] ld [wScriptVar], a ret @@ -1849,9 +1572,6 @@ Script_checkver: db GS_VERSION Script_getmonname: -; script command 0x40 -; parameters: string_buffer, mon_id (0 aka USE_SCRIPT_VAR to use wScriptVar) - call GetScriptByte and a jr nz, .gotit @@ -1876,9 +1596,6 @@ CopyConvertedText: ret Script_getitemname: -; script command 0x41 -; parameters: string_buffer, item_id (0 aka USE_SCRIPT_VAR to use wScriptVar) - call GetScriptByte and a ; USE_SCRIPT_VAR jr nz, .ok @@ -1890,9 +1607,6 @@ Script_getitemname: jr GetStringBuffer Script_getcurlandmarkname: -; script command 0x42 -; parameters: string_buffer - ld a, [wMapGroup] ld b, a ld a, [wMapNumber] @@ -1906,16 +1620,10 @@ ConvertLandmarkToText: jp GetStringBuffer Script_getlandmarkname: -; script command 0xa5 -; parameters: string_buffer, landmark_id - call GetScriptByte jr ConvertLandmarkToText Script_gettrainername: -; script command 0x43 -; parameters: string_buffer, trainer_group, trainer_id - call GetScriptByte ld c, a call GetScriptByte @@ -1924,9 +1632,6 @@ Script_gettrainername: jr GetStringBuffer Script_getname: -; script command 0xa7 -; parameters: string_buffer, type, id - call GetScriptByte ld [wNamedObjectTypeBuffer], a @@ -1938,17 +1643,11 @@ ContinueToGetName: jp GetStringBuffer Script_gettrainerclassname: -; script command 0xa6 -; parameters: string_buffer, trainer_group - ld a, TRAINER_NAME ld [wNamedObjectTypeBuffer], a jr ContinueToGetName Script_getmoney: -; script command 0x3d -; parameters: string_buffer, account - call ResetStringBuffer1 call GetMoneyAccount ld hl, wStringBuffer1 @@ -1958,9 +1657,6 @@ Script_getmoney: jp GetStringBuffer Script_getcoins: -; script command 0x3e -; parameters: string_buffer - call ResetStringBuffer1 ld hl, wStringBuffer1 ld de, wCoins @@ -1970,9 +1666,6 @@ Script_getcoins: jp GetStringBuffer Script_getnum: -; script command 0x3f -; parameters: string_buffer - call ResetStringBuffer1 ld de, wScriptVar ld hl, wStringBuffer1 @@ -1989,9 +1682,6 @@ ResetStringBuffer1: ret Script_getstring: -; script command 0x44 -; parameters: string_buffer, text_pointer - call GetScriptByte ld e, a call GetScriptByte @@ -2003,9 +1693,6 @@ Script_getstring: jp GetStringBuffer Script_givepokemail: -; script command 0x2f -; parameters: pointer - call GetScriptByte ld l, a call GetScriptByte @@ -2024,9 +1711,6 @@ Script_givepokemail: ret Script_checkpokemail: -; script command 0x30 -; parameters: pointer - call GetScriptByte ld e, a call GetScriptByte @@ -2037,9 +1721,6 @@ Script_checkpokemail: ret Script_giveitem: -; script command 0x1f -; parameters: item, quantity - call GetScriptByte cp ITEM_FROM_MEM jr nz, .ok @@ -2060,9 +1741,6 @@ Script_giveitem: ret Script_takeitem: -; script command 0x20 -; parameters: item, quantity - xor a ld [wScriptVar], a call GetScriptByte @@ -2079,9 +1757,6 @@ Script_takeitem: ret Script_checkitem: -; script command 0x21 -; parameters: item - xor a ld [wScriptVar], a call GetScriptByte @@ -2094,27 +1769,18 @@ Script_checkitem: ret Script_givemoney: -; script command 0x22 -; parameters: account, money - call GetMoneyAccount call LoadMoneyAmountToMem farcall GiveMoney ret Script_takemoney: -; script command 0x23 -; parameters: account, money - call GetMoneyAccount call LoadMoneyAmountToMem farcall TakeMoney ret Script_checkmoney: -; script command 0x24 -; parameters: account, money - call GetMoneyAccount call LoadMoneyAmountToMem farcall CompareMoney @@ -2156,25 +1822,16 @@ LoadMoneyAmountToMem: ret Script_givecoins: -; script command 0x25 -; parameters: coins - call LoadCoinAmountToMem farcall GiveCoins ret Script_takecoins: -; script command 0x26 -; parameters: coins - call LoadCoinAmountToMem farcall TakeCoins ret Script_checkcoins: -; script command 0x27 -; parameters: coins - call LoadCoinAmountToMem farcall CheckCoins jr CompareMoneyAction @@ -2188,9 +1845,6 @@ LoadCoinAmountToMem: ret Script_checktime: -; script command 0x2b -; parameters: time - xor a ld [wScriptVar], a farcall CheckTime @@ -2202,9 +1856,6 @@ Script_checktime: ret Script_checkpoke: -; script command 0x2c -; parameters: pokemon - xor a ld [wScriptVar], a call GetScriptByte @@ -2217,9 +1868,6 @@ Script_checkpoke: ret Script_addcellnum: -; script command 0x28 -; parameters: person - xor a ld [wScriptVar], a call GetScriptByte @@ -2231,9 +1879,6 @@ Script_addcellnum: ret Script_delcellnum: -; script command 0x29 -; parameters: person - xor a ld [wScriptVar], a call GetScriptByte @@ -2245,8 +1890,6 @@ Script_delcellnum: ret Script_checkcellnum: -; script command 0x2a -; parameters: person ; returns false if the cell number is not in your phone xor a @@ -2260,9 +1903,6 @@ Script_checkcellnum: ret Script_specialphonecall: -; script command 0x9c -; parameters: call_id - call GetScriptByte ld [wSpecialPhoneCallID], a call GetScriptByte @@ -2270,7 +1910,6 @@ Script_specialphonecall: ret Script_checkphonecall: -; script command 0x9d ; returns false if no special phone call is stored ld a, [wSpecialPhoneCallID] @@ -2282,9 +1921,6 @@ Script_checkphonecall: ret Script_givepoke: -; script command 0x2d -; parameters: pokemon, level, item, trainer, trainer_name_pointer, pkmn_nickname - call GetScriptByte ld [wCurPartySpecies], a call GetScriptByte @@ -2310,8 +1946,6 @@ Script_givepoke: ret Script_giveegg: -; script command 0x2e -; parameters: pokemon, level ; if no room in the party, return 0 in wScriptVar; else, return 2 xor a ; PARTYMON @@ -2328,9 +1962,6 @@ Script_giveegg: ret Script_setevent: -; script command 0x33 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2340,9 +1971,6 @@ Script_setevent: ret Script_clearevent: -; script command 0x32 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2352,9 +1980,6 @@ Script_clearevent: ret Script_checkevent: -; script command 0x31 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2370,9 +1995,6 @@ Script_checkevent: ret Script_setflag: -; script command 0x36 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2382,9 +2004,6 @@ Script_setflag: ret Script_clearflag: -; script command 0x35 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2394,9 +2013,6 @@ Script_clearflag: ret Script_checkflag: -; script command 0x34 -; parameters: bit_number - call GetScriptByte ld e, a call GetScriptByte @@ -2416,23 +2032,16 @@ _EngineFlagAction: ret Script_wildoff: -; script command 0x38 - ld hl, wStatusFlags set STATUSFLAGS_NO_WILD_ENCOUNTERS_F, [hl] ret Script_wildon: -; script command 0x37 - ld hl, wStatusFlags res STATUSFLAGS_NO_WILD_ENCOUNTERS_F, [hl] ret Script_xycompare: -; script command 0x39 -; parameters: pointer - call GetScriptByte ld [wXYComparePointer], a call GetScriptByte @@ -2440,9 +2049,6 @@ Script_xycompare: ret Script_warpfacing: -; script command 0xa3 -; parameters: facing, map_group, map_id, x, y - call GetScriptByte maskbits NUM_DIRECTIONS ld c, a @@ -2453,9 +2059,6 @@ Script_warpfacing: ; fallthrough Script_warp: -; script command 0x3c -; parameters: map_group, map_id, x, y - ; This seems to be some sort of error handling case. call GetScriptByte and a @@ -2490,9 +2093,6 @@ Script_warp: ret Script_warpmod: -; script command 0x3a -; parameters: warp_id, map_group, map_id - call GetScriptByte ld [wBackupWarpNumber], a call GetScriptByte @@ -2502,9 +2102,6 @@ Script_warpmod: ret Script_blackoutmod: -; script command 0x3b -; parameters: map_group, map_id - call GetScriptByte ld [wLastSpawnMapGroup], a call GetScriptByte @@ -2512,16 +2109,11 @@ Script_blackoutmod: ret Script_dontrestartmapmusic: -; script command 0x83 - ld a, TRUE ld [wDontPlayMapMusicOnReload], a ret Script_writecmdqueue: -; script command 0x7d -; parameters: queue_pointer - call GetScriptByte ld e, a call GetScriptByte @@ -2532,9 +2124,6 @@ Script_writecmdqueue: ret Script_delcmdqueue: -; script command 0x7e -; parameters: byte - xor a ld [wScriptVar], a call GetScriptByte @@ -2546,9 +2135,6 @@ Script_delcmdqueue: ret Script_changemapblocks: -; script command 0x79 -; parameters: map_data_pointer - call GetScriptByte ld [wMapBlocksBank], a call GetScriptByte @@ -2560,9 +2146,6 @@ Script_changemapblocks: ret Script_changeblock: -; script command 0x7a -; parameters: x, y, block - call GetScriptByte add 4 ld d, a @@ -2576,8 +2159,6 @@ Script_changeblock: ret Script_reloadmappart:: -; script command 0x7c - xor a ldh [hBGMapMode], a call OverworldTextModeSwitch @@ -2587,8 +2168,6 @@ Script_reloadmappart:: ret Script_warpcheck: -; script command 0x8e - call WarpCheck ret nc farcall EnableEvents @@ -2600,9 +2179,6 @@ Script_enableevents: ret Script_newloadmap: -; script command 0x8a -; parameters: which_method - call GetScriptByte ldh [hMapEntryMethod], a ld a, MAPSTATUS_ENTER @@ -2611,29 +2187,19 @@ Script_newloadmap: ret Script_reloadandreturn: -; script command 0x92 - call Script_newloadmap jp Script_end Script_opentext: -; script command 0x47 - call OpenText ret Script_refreshscreen: -; script command 0x48 -; parameters: dummy - call RefreshScreen call GetScriptByte ret Script_writeunusedbytebuffer: -; script command 0x4a -; parameters: byte - call GetScriptByte ld [wUnusedScriptByteBuffer], a ret @@ -2641,16 +2207,11 @@ Script_writeunusedbytebuffer: db closetext_command ; unused Script_closetext: -; script command 0x49 - call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap call CloseText ret Script_autoinput: -; script command 0x89 -; parameters: input_pointer - call GetScriptByte push af call GetScriptByte @@ -2662,9 +2223,6 @@ Script_autoinput: ret Script_pause: -; script command 0x8b -; parameters: length - call GetScriptByte and a jr z, .loop @@ -2678,9 +2236,6 @@ Script_pause: ret Script_deactivatefacing: -; script command 0x8c -; parameters: time - call GetScriptByte and a jr z, .no_time @@ -2692,15 +2247,10 @@ Script_deactivatefacing: ret Script_stopandsjump: -; script command 0x8f -; parameters: pointer - call StopScript jp Script_sjump Script_end: -; script command 0x91 - call ExitScriptSubroutine jr c, .resume ret @@ -2716,8 +2266,6 @@ Script_end: ret Script_return: -; script command 0x90 - call ExitScriptSubroutine jr c, .dummy .dummy @@ -2757,8 +2305,6 @@ ExitScriptSubroutine: ret Script_endall: -; script command 0x93 - xor a ld [wScriptStackSize], a ld [wScriptRunning], a @@ -2770,8 +2316,6 @@ Script_endall: ret Script_halloffame: -; script command 0xa1 - ld hl, wGameTimerPause res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] farcall StubbedTrainerRankings_HallOfFame @@ -2782,8 +2326,6 @@ Script_halloffame: jr ReturnFromCredits Script_credits: -; script command 0xa2 - farcall RedCredits ReturnFromCredits: call Script_endall @@ -2793,9 +2335,6 @@ ReturnFromCredits: ret Script_wait: -; script command 0xa8 -; parameters: unknown - push bc call GetScriptByte .loop @@ -2809,8 +2348,6 @@ Script_wait: ret Script_checksave: -; script command 0xa9 - farcall CheckSave ld a, c ld [wScriptVar], a diff --git a/engine/overworld/variables.asm b/engine/overworld/variables.asm index 329a2f9f2..321665ad5 100644 --- a/engine/overworld/variables.asm +++ b/engine/overworld/variables.asm @@ -106,11 +106,11 @@ _GetVarAction:: .UnownCaught: ; Number of unique Unown caught. - call .count + call .count_unown ld a, b jp .loadstringbuffer2 -.count +.count_unown ld hl, wUnownDex ld b, 0 .loop